Rename REAMDE to README.md
[nit.git] / src / nitlight.nit
index dd40996..9a7b050 100644 (file)
@@ -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 <span> 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]... <file.nit>...\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
@@ -51,12 +55,17 @@ for mm in mmodules do
        if dir != null then toolcontext.info("write {dir}/{mm.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
 
        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 """<head>
@@ -69,9 +78,9 @@ for mm in mmodules do
                        </style>
                        """
                else
-                       page.add_raw_html v.head_content
+                       page.add_raw_html """<link rel="stylesheet" type="text/css" href="style.css" />"""
                end
-               page.add_raw_html """<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">\n"""
+               page.add_raw_html v.head_content
                page.add_raw_html "</head><body><pre class='nit_code'>"
        end
        v.enter_visit(m)
@@ -112,7 +121,7 @@ if dir != null then
 
        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