X-Git-Url: http://nitlanguage.org diff --git a/src/nitlight.nit b/src/nitlight.nit index dd40996..f23bcd3 100644 --- a/src/nitlight.nit +++ b/src/nitlight.nit @@ -19,13 +19,17 @@ import highlight var toolcontext = new ToolContext +# Try to colorize, even if programs are non valid +toolcontext.keep_going = true + var opt_fragment = new OptionBool("Omit document header and footer", "-f", "--fragment") +var opt_line_id_prefix = new OptionString("Prefix of the id of each line element", "--line-id-prefix") 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_first_line, opt_last_line, opt_dir, opt_full) +toolcontext.option_context.add_option(opt_fragment, opt_line_id_prefix, opt_first_line, opt_last_line, opt_dir, opt_full) toolcontext.tooldescription = "Usage: nitlight [OPTION]... ...\nGenerates HTML of highlited code from Nit source files." toolcontext.process_options(args) @@ -34,7 +38,7 @@ var modelbuilder = new ModelBuilder(model, toolcontext) var args = toolcontext.option_context.rest -var mmodules = modelbuilder.parse(args) +var mmodules = modelbuilder.parse_full(args) modelbuilder.run_phases if opt_full.value then mmodules = model.mmodules @@ -48,15 +52,22 @@ else if mmodules.length > 1 then end for mm in mmodules do - if dir != null then toolcontext.info("write {dir}/{mm.name}.html", 1) + if dir != null then toolcontext.info("write {dir}/{mm.c_name}.html", 1) var v = new HighlightVisitor + var prefix = opt_line_id_prefix.value + if prefix != null then + v.line_id_prefix = prefix.trim + end + v.include_loose_tokens = true + v.include_whole_lines = true 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 - var m = modelbuilder.mmodule2nmodule[mm] + var m = modelbuilder.mmodule2node(mm) + assert m != null if not opt_fragment.value then page = new HTMLTag("html") page.add_raw_html """ @@ -69,9 +80,9 @@ for mm in mmodules do """ else - page.add_raw_html v.head_content + page.add_raw_html """""" end - page.add_raw_html """\n""" + page.add_raw_html v.head_content page.add_raw_html "
"
 	end
 	v.enter_visit(m)
@@ -85,7 +96,7 @@ for mm in mmodules do
 	end
 
 	if dir != null then
-		page.write_to_file("{dir}/{mm.name}.html")
+		page.write_to_file("{dir}/{mm.c_name}.html")
 	else
 		page.write_to(stdout)
 	end
@@ -104,15 +115,15 @@ if dir != null then
 		var n2 = new HTMLTag("a")
 		page.add n
 		n.add n2
-		n2.attr("href", "{mm.name}.html")
-		n2.text(mm.name)
+		n2.attr("href", "{mm.c_name}.html")
+		n2.text(mm.full_name)
 	end
 	page.add_raw_html ""
 	page.write_to_file("{dir}/index.html")
 
 	var v = new HighlightVisitor
 	toolcontext.info("write {dir}/style.css", 1)
-	var f = new OFStream.open("{dir}/style.css")
+	var f = new FileWriter.open("{dir}/style.css")
 	f.write v.css_content
 	f.close
 end