Merge: astbuilder: First implementation of clonable for ast nodes
[nit.git] / lib / markdown / nitmd.nit
index 0e1cd00..34e8d93 100644 (file)
 module nitmd
 
 import markdown
+import decorators
+import man
 
-import opts
+import config
 
-var options = new OptionContext
-var opt_help = new OptionBool("Show this help.", "-h", "-?", "--help")
-options.add_option(opt_help)
+var opt_to = new OptionString("Specify output format (html, md, man)", "-t", "--to")
 
-options.parse(args)
-if options.rest.length != 1 then
-       print "usage: nitmd [-t format] <file.md>"
-       options.usage
+var usage = new Buffer
+usage.append "Usage: nitmd [-t format] <file.md>\n"
+usage.append "Translate Markdown documents to other formats."
+
+var config = new Config
+config.add_option(opt_to)
+config.tool_description = usage.write_to_string
+
+config.parse_options(args)
+if config.args.length != 1 then
+       config.usage
        exit 1
 end
 
-var file = options.rest.first
+var file = config.args.first
 if not file.file_exists then
        print "'{file}' not found"
        exit 1
@@ -41,4 +48,15 @@ var md = ifs.read_all
 ifs.close
 
 var processor = new MarkdownProcessor
+var to = opt_to.value
+if to == null or to == "html" then
+       # Noop
+else if to == "md" then
+       processor.decorator = new MdDecorator
+else if to == "man" then
+       processor.decorator = new ManDecorator
+else
+       print "Unknown output format: {to}"
+       exit 1
+end
 print processor.process(md)