diff options
Diffstat (limited to 'markdown/__main__.py')
-rw-r--r-- | markdown/__main__.py | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/markdown/__main__.py b/markdown/__main__.py new file mode 100644 index 0000000..56afc10 --- /dev/null +++ b/markdown/__main__.py @@ -0,0 +1,87 @@ +""" +COMMAND-LINE SPECIFIC STUFF +============================================================================= + +""" + +import markdown +import sys +import optparse + +import logging +from logging import DEBUG, INFO, CRITICAL + +logger = logging.getLogger('MARKDOWN') + +def parse_options(): + """ + Define and parse `optparse` options for command-line usage. + """ + usage = """%prog [options] [INPUTFILE] + (STDIN is assumed if no INPUTFILE is given)""" + desc = "A Python implementation of John Gruber's Markdown. " \ + "http://www.freewisdom.org/projects/python-markdown/" + ver = "%%prog %s" % markdown.version + + parser = optparse.OptionParser(usage=usage, description=desc, version=ver) + parser.add_option("-f", "--file", dest="filename", default=sys.stdout, + help="Write output to OUTPUT_FILE. Defaults to STDOUT.", + metavar="OUTPUT_FILE") + parser.add_option("-e", "--encoding", dest="encoding", + help="Encoding for input and output files.",) + parser.add_option("-q", "--quiet", default = CRITICAL, + action="store_const", const=CRITICAL+10, dest="verbose", + help="Suppress all warnings.") + parser.add_option("-v", "--verbose", + action="store_const", const=INFO, dest="verbose", + help="Print all warnings.") + parser.add_option("-s", "--safe", dest="safe", default=False, + metavar="SAFE_MODE", + help="'replace', 'remove' or 'escape' HTML tags in input") + parser.add_option("-o", "--output_format", dest="output_format", + default='xhtml1', metavar="OUTPUT_FORMAT", + help="'xhtml1' (default), 'html4' or 'html5'.") + parser.add_option("--noisy", + action="store_const", const=DEBUG, dest="verbose", + help="Print debug messages.") + parser.add_option("-x", "--extension", action="append", dest="extensions", + help = "Load extension EXTENSION.", metavar="EXTENSION") + parser.add_option("-n", "--no_lazy_ol", dest="lazy_ol", + action='store_false', default=True, + help="Observe number of first item of ordered lists.") + + (options, args) = parser.parse_args() + + if len(args) == 0: + input_file = sys.stdin + else: + input_file = args[0] + + if not options.extensions: + options.extensions = [] + + return {'input': input_file, + 'output': options.filename, + 'safe_mode': options.safe, + 'extensions': options.extensions, + 'encoding': options.encoding, + 'output_format': options.output_format, + 'lazy_ol': options.lazy_ol}, options.verbose + +def run(): + """Run Markdown from the command line.""" + + # Parse options and adjust logging level if necessary + options, logging_level = parse_options() + if not options: sys.exit(2) + logger.setLevel(logging_level) + logger.addHandler(logging.StreamHandler()) + + # Run + markdown.markdownFromFile(**options) + +if __name__ == '__main__': + # Support running module as a commandline command. + # Python 2.5 & 2.6 do: `python -m markdown.__main__ [options] [args]`. + # Python 2.7 & 3.x do: `python -m markdown [options] [args]`. + run() |