Show More
@@ -0,0 +1,58 b'' | |||||
|
1 | """ | |||
|
2 | Contains postprocessor for serving nbconvert output. | |||
|
3 | """ | |||
|
4 | #----------------------------------------------------------------------------- | |||
|
5 | #Copyright (c) 2013, the IPython Development Team. | |||
|
6 | # | |||
|
7 | #Distributed under the terms of the Modified BSD License. | |||
|
8 | # | |||
|
9 | #The full license is in the file COPYING.txt, distributed with this software. | |||
|
10 | #----------------------------------------------------------------------------- | |||
|
11 | ||||
|
12 | #----------------------------------------------------------------------------- | |||
|
13 | # Imports | |||
|
14 | #----------------------------------------------------------------------------- | |||
|
15 | ||||
|
16 | import os | |||
|
17 | import webbrowser | |||
|
18 | ||||
|
19 | from BaseHTTPServer import HTTPServer | |||
|
20 | from SimpleHTTPServer import SimpleHTTPRequestHandler | |||
|
21 | ||||
|
22 | from IPython.utils.traitlets import Unicode, Bool | |||
|
23 | ||||
|
24 | from .base import PostProcessorBase | |||
|
25 | ||||
|
26 | #----------------------------------------------------------------------------- | |||
|
27 | # Classes | |||
|
28 | #----------------------------------------------------------------------------- | |||
|
29 | class ServePostProcessor(PostProcessorBase): | |||
|
30 | """Post processor designed to serve files""" | |||
|
31 | ||||
|
32 | ||||
|
33 | build_directory = Unicode(".", config=True, | |||
|
34 | help="""Directory to write output to. Leave blank | |||
|
35 | to output to the current directory""") | |||
|
36 | ||||
|
37 | open_in_browser = Bool(True, config=True, | |||
|
38 | help="""Set to False to deactivate | |||
|
39 | the opening of the browser""") | |||
|
40 | ||||
|
41 | def call(self, input): | |||
|
42 | """ | |||
|
43 | Simple implementation to serve the build directory. | |||
|
44 | """ | |||
|
45 | ||||
|
46 | try: | |||
|
47 | os.chdir(self.build_directory) | |||
|
48 | httpd = HTTPServer(('127.0.0.1', 8000), SimpleHTTPRequestHandler) | |||
|
49 | sa = httpd.socket.getsockname() | |||
|
50 | name = input[2:] | |||
|
51 | url = "http://" + sa[0] + ":" + str(sa[1]) + "/" + name | |||
|
52 | if self.open_in_browser: | |||
|
53 | webbrowser.open(url, new=2) | |||
|
54 | print("Serving " + name + " on " + url) | |||
|
55 | print("Use Control-C to stop this server.") | |||
|
56 | httpd.serve_forever() | |||
|
57 | except KeyboardInterrupt: | |||
|
58 | print("The server is shut down.") |
@@ -119,6 +119,10 b' class NbConvertApp(BaseIPythonApplication):' | |||||
119 |
|
119 | |||
120 | > ipython nbconvert mynotebook.ipynb --to latex --post PDF |
|
120 | > ipython nbconvert mynotebook.ipynb --to latex --post PDF | |
121 |
|
121 | |||
|
122 | You can get (and serve) a Reveal.js-powered slideshow | |||
|
123 | ||||
|
124 | > ipython nbconvert myslides.ipynb --to slides --post serve | |||
|
125 | ||||
122 | Multiple notebooks can be given at the command line in a couple of |
|
126 | Multiple notebooks can be given at the command line in a couple of | |
123 | different ways: |
|
127 | different ways: | |
124 |
|
128 | |||
@@ -157,7 +161,8 b' class NbConvertApp(BaseIPythonApplication):' | |||||
157 | post_processor_class = DottedOrNone(config=True, |
|
161 | post_processor_class = DottedOrNone(config=True, | |
158 | help="""PostProcessor class used to write the |
|
162 | help="""PostProcessor class used to write the | |
159 | results of the conversion""") |
|
163 | results of the conversion""") | |
160 |
post_processor_aliases = {'PDF': 'IPython.nbconvert.post_processors.pdf.PDFPostProcessor' |
|
164 | post_processor_aliases = {'PDF': 'IPython.nbconvert.post_processors.pdf.PDFPostProcessor', | |
|
165 | 'serve': 'IPython.nbconvert.post_processors.serve.ServePostProcessor'} | |||
161 | post_processor_factory = Type() |
|
166 | post_processor_factory = Type() | |
162 |
|
167 | |||
163 | def _post_processor_class_changed(self, name, old, new): |
|
168 | def _post_processor_class_changed(self, name, old, new): | |
@@ -292,8 +297,7 b' class NbConvertApp(BaseIPythonApplication):' | |||||
292 | if conversion_success == 0: |
|
297 | if conversion_success == 0: | |
293 | self.print_help() |
|
298 | self.print_help() | |
294 | sys.exit(-1) |
|
299 | sys.exit(-1) | |
295 |
|
300 | |||
296 |
|
||||
297 | #----------------------------------------------------------------------------- |
|
301 | #----------------------------------------------------------------------------- | |
298 | # Main entry point |
|
302 | # Main entry point | |
299 | #----------------------------------------------------------------------------- |
|
303 | #----------------------------------------------------------------------------- |
@@ -1,2 +1,3 b'' | |||||
1 | from .base import PostProcessorBase |
|
1 | from .base import PostProcessorBase | |
2 | from .pdf import PDFPostProcessor |
|
2 | from .pdf import PDFPostProcessor | |
|
3 | from .serve import ServePostProcessor |
@@ -99,4 +99,4 b' class FilesWriter(WriterBase):' | |||||
99 | # Write conversion results. |
|
99 | # Write conversion results. | |
100 | with io.open(dest, 'w') as f: |
|
100 | with io.open(dest, 'w') as f: | |
101 | f.write(output) |
|
101 | f.write(output) | |
102 |
return dest |
|
102 | return dest No newline at end of file |
General Comments 0
You need to be logged in to leave comments.
Login now