88 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| 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://packages.python.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("-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 = 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,
 | |
|             '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()
 |