var toolcontext = new ToolContext
var opt_fragment = new OptionBool("Omit document header and footer", "-f", "--fragment")
+var opt_first_line = new OptionInt("Start the source file at this line (default: 1)", 0, "--first-line")
+var opt_last_line = new OptionInt("End the source file at this line (default: to the end)", 0, "--last-line")
var opt_dir = new OptionString("Output html files in a specific directory (required if more than one module)", "-d", "--dir")
var opt_full = new OptionBool("Process also imported modules", "--full")
var opt_ast = new OptionBool("Generate specific HTML elements for each Node of the AST", "--ast")
-toolcontext.option_context.add_option(opt_fragment, opt_dir, opt_full)
+toolcontext.option_context.add_option(opt_fragment, opt_first_line, opt_last_line, opt_dir, opt_full)
+toolcontext.tooldescription = "Usage: nitlight [OPTION]... <file.nit>...\nGenerates HTML of highlited code from Nit source files."
var model = new Model
var modelbuilder = new ModelBuilder(model, toolcontext)
-toolcontext.process_options
+toolcontext.process_options(args)
var args = toolcontext.option_context.rest
-if args.is_empty then
- print "usage: nitlight [options] files..."
- toolcontext.option_context.usage
- return
-end
-
var mmodules = modelbuilder.parse(args)
modelbuilder.run_phases
if dir != null then toolcontext.info("write {dir}/{mm.name}.html", 1)
var v = new HighlightVisitor
+
+ if opt_first_line.value != 0 then v.first_line = opt_first_line.value
+ if opt_last_line.value != 0 then v.last_line = opt_last_line.value
if opt_ast.value then v.with_ast = true
var page = null
if not opt_fragment.value then
end
if dir != null then
- page.save("{dir}/{mm.name}.html")
+ page.write_to_file("{dir}/{mm.name}.html")
else
- print page.html
+ page.write_to(stdout)
end
end
n2.text(mm.name)
end
page.add_raw_html "</li></body>"
- page.save("{dir}/index.html")
+ page.write_to_file("{dir}/index.html")
var v = new HighlightVisitor
toolcontext.info("write {dir}/style.css", 1)