Index: third_party/Python-Markdown/markdown/__main__.py |
diff --git a/third_party/Python-Markdown/markdown/__main__.py b/third_party/Python-Markdown/markdown/__main__.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..17bfa9f3c494a3f297452a2443e57034dea3ffed |
--- /dev/null |
+++ b/third_party/Python-Markdown/markdown/__main__.py |
@@ -0,0 +1,136 @@ |
+""" |
+COMMAND-LINE SPECIFIC STUFF |
+============================================================================= |
+ |
+""" |
+ |
+import sys |
+import optparse |
+import codecs |
+import warnings |
+import markdown |
+try: |
+ import yaml |
+except ImportError: # pragma: no cover |
+ import json as yaml |
+ |
+import logging |
+from logging import DEBUG, WARNING, CRITICAL |
+ |
+logger = logging.getLogger('MARKDOWN') |
+ |
+ |
+def parse_options(args=None, values=None): |
+ """ |
+ 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. " \ |
+ "https://pythonhosted.org/Markdown/" |
+ ver = "%%prog %s" % markdown.version |
+ |
+ parser = optparse.OptionParser(usage=usage, description=desc, version=ver) |
+ parser.add_option("-f", "--file", dest="filename", default=None, |
+ 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("-s", "--safe", dest="safe", default=False, |
+ metavar="SAFE_MODE", |
+ help="Deprecated! '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("-n", "--no_lazy_ol", dest="lazy_ol", |
+ action='store_false', default=True, |
+ help="Observe number of first item of ordered lists.") |
+ parser.add_option("-x", "--extension", action="append", dest="extensions", |
+ help="Load extension EXTENSION.", metavar="EXTENSION") |
+ parser.add_option("-c", "--extension_configs", |
+ dest="configfile", default=None, |
+ help="Read extension configurations from CONFIG_FILE. " |
+ "CONFIG_FILE must be of JSON or YAML format. YAML" |
+ "format requires that a python YAML library be " |
+ "installed. The parsed JSON or YAML must result in a " |
+ "python dictionary which would be accepted by the " |
+ "'extension_configs' keyword on the markdown.Markdown " |
+ "class. The extensions must also be loaded with the " |
+ "`--extension` option.", |
+ metavar="CONFIG_FILE") |
+ 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=WARNING, dest="verbose", |
+ help="Print all warnings.") |
+ parser.add_option("--noisy", |
+ action="store_const", const=DEBUG, dest="verbose", |
+ help="Print debug messages.") |
+ |
+ (options, args) = parser.parse_args(args, values) |
+ |
+ if len(args) == 0: |
+ input_file = None |
+ else: |
+ input_file = args[0] |
+ |
+ if not options.extensions: |
+ options.extensions = [] |
+ |
+ extension_configs = {} |
+ if options.configfile: |
+ with codecs.open( |
+ options.configfile, mode="r", encoding=options.encoding |
+ ) as fp: |
+ try: |
+ extension_configs = yaml.load(fp) |
+ except Exception as e: |
+ message = "Failed parsing extension config file: %s" % \ |
+ options.configfile |
+ e.args = (message,) + e.args[1:] |
+ raise |
+ |
+ opts = { |
+ 'input': input_file, |
+ 'output': options.filename, |
+ 'extensions': options.extensions, |
+ 'extension_configs': extension_configs, |
+ 'encoding': options.encoding, |
+ 'output_format': options.output_format, |
+ 'lazy_ol': options.lazy_ol |
+ } |
+ |
+ if options.safe: |
+ # Avoid deprecation warning if user didn't set option |
+ opts['safe_mode'] = options.safe |
+ |
+ return opts, options.verbose |
+ |
+ |
+def run(): # pragma: no cover |
+ """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) |
+ console_handler = logging.StreamHandler() |
+ logger.addHandler(console_handler) |
+ if logging_level <= WARNING: |
+ # Ensure deprecation warnings get displayed |
+ warnings.filterwarnings('default') |
+ logging.captureWarnings(True) |
+ warn_logger = logging.getLogger('py.warnings') |
+ warn_logger.addHandler(console_handler) |
+ |
+ # Run |
+ markdown.markdownFromFile(**options) |
+ |
+ |
+if __name__ == '__main__': # pragma: no cover |
+ # Support running module as a commandline command. |
+ # Python 2.7 & 3.x do: `python -m markdown [options] [args]`. |
+ run() |