##// END OF EJS Templates
more test fixed
more test fixed

File last commit:

r8620:66b7dfea
r8623:33ea591a
Show More
nbconvert.py
94 lines | 3.2 KiB | text/x-python | PythonLexer
#!/usr/bin/env python
"""Convert IPython notebooks to other formats, such as ReST, and HTML.
Example:
./nbconvert.py --format rst file.ipynb
Produces 'file.rst', along with auto-generated figure files
called nb_figure_NN.png.
"""
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from __future__ import print_function
# Stdlib
import codecs
import io
import logging
import os
import pprint
import re
import subprocess
import sys
import json
import copy
from types import FunctionType
from shutil import rmtree
from markdown import markdown
# From IPython
from IPython.external import argparse
from IPython.nbformat import current as nbformat
from IPython.utils.text import indent
from IPython.nbformat.v3.nbjson import BytesEncoder
from IPython.utils import path, py3compat
# local
from lexers import IPythonLexer
from converters.html import ConverterHTML
from converters.markdown import ConverterMarkdown
from converters.bloggerhtml import ConverterBloggerHTML
from converters.rst import ConverterRST
from converters.latex import ConverterLaTeX
from converters.notebook import ConverterNotebook
from converters.python import ConverterPy
known_formats = "rst (default), html, blogger-html, latex, markdown, py"
def main(infile, format='rst'):
"""Convert a notebook to html in one step"""
# XXX: this is just quick and dirty for now. When adding a new format,
# make sure to add it to the `known_formats` string above, which gets
# printed in in the catch-all else, as well as in the help
if format == 'rst':
converter = ConverterRST(infile)
converter.render()
elif format == 'markdown':
converter = ConverterMarkdown(infile)
converter.render()
elif format == 'html':
converter = ConverterHTML(infile)
htmlfname = converter.render()
elif format == 'blogger-html':
converter = ConverterBloggerHTML(infile)
htmlfname = converter.render()
elif format == 'latex':
converter = ConverterLaTeX(infile)
latexfname = converter.render()
elif format == 'py':
converter = ConverterPy(infile)
converter.render()
else:
raise SystemExit("Unknown format '%s', " % format +
"known formats are: " + known_formats)
#-----------------------------------------------------------------------------
# Script main
#-----------------------------------------------------------------------------
if __name__ == '__main__':
parser = argparse.ArgumentParser(description=__doc__,
formatter_class=argparse.RawTextHelpFormatter)
# TODO: consider passing file like object around, rather than filenames
# would allow us to process stdin, or even http streams
#parser.add_argument('infile', nargs='?', type=argparse.FileType('r'), default=sys.stdin)
#Require a filename as a positional argument
parser.add_argument('infile', nargs=1)
parser.add_argument('-f', '--format', default='rst',
help='Output format. Supported formats: \n' +
known_formats)
args = parser.parse_args()
main(infile=args.infile[0], format=args.format)