| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- """
- COMMAND-LINE SPECIFIC STUFF
- =============================================================================
- The rest of the code is specifically for handling the case where Python
- Markdown is called from the command line.
- """
- import markdown
- import sys
- import logging
- from logging import DEBUG, INFO, WARN, ERROR, CRITICAL
- EXECUTABLE_NAME_FOR_USAGE = "python markdown.py"
- """ The name used in the usage statement displayed for python versions < 2.3.
- (With python 2.3 and higher the usage statement is generated by optparse
- and uses the actual name of the executable called.) """
- OPTPARSE_WARNING = """
- Python 2.3 or higher required for advanced command line options.
- For lower versions of Python use:
- %s INPUT_FILE > OUTPUT_FILE
- """ % EXECUTABLE_NAME_FOR_USAGE
- def parse_options():
- """
- Define and parse `optparse` options for command-line usage.
- """
- try:
- optparse = __import__("optparse")
- except:
- if len(sys.argv) == 2:
- return {'input': sys.argv[1],
- 'output': None,
- 'safe': False,
- 'extensions': [],
- 'encoding': None }, CRITICAL
- else:
- print OPTPARSE_WARNING
- return None, None
- parser = optparse.OptionParser(usage="%prog INPUTFILE [options]")
- parser.add_option("-f", "--file", dest="filename", default=sys.stdout,
- help="write output to OUTPUT_FILE",
- 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 messages")
- parser.add_option("-v", "--verbose",
- action="store_const", const=INFO, dest="verbose",
- help="print info messages")
- parser.add_option("-s", "--safe", dest="safe", default=False,
- metavar="SAFE_MODE",
- help="safe mode ('replace', 'remove' or 'escape' user's HTML tag)")
- parser.add_option("-o", "--output_format", dest="output_format",
- default='xhtml1', metavar="OUTPUT_FORMAT",
- help="Format of output. One of 'xhtml1' (default) or 'html4'.")
- 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")
- (options, args) = parser.parse_args()
- if not len(args) == 1:
- parser.print_help()
- return None, None
- 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}, 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(0)
- if logging_level: logging.getLogger('MARKDOWN').setLevel(logging_level)
- # Run
- markdown.markdownFromFile(**options)
|