lib: intro `prompt`, basic Apache 2.0 service to display a prompt
[nit.git] / src / nitdoc.nit
index 1e6059b..159c771 100644 (file)
@@ -19,18 +19,20 @@ module nitdoc
 
 import modelbuilder
 import doc
-import counter
 
 redef class ToolContext
        # Nitdoc generation phase.
        var docphase: Phase = new Nitdoc(self, null)
 
-       # File pattern used to link documentation to source code.
-       var opt_test = new OptionBool("print test data", "--test")
+       # Do not generate documentation for attributes.
+       var opt_no_attributes = new OptionBool("Ignore the attributes", "--no-attributes")
+
+       # Do not generate documentation for private properties.
+       var opt_private = new OptionBool("Also generate private API", "--private")
 
        redef init do
                super
-               option_context.add_option(opt_test)
+               option_context.add_option(opt_no_attributes, opt_private)
        end
 end
 
@@ -39,10 +41,18 @@ private class Nitdoc
        super Phase
        redef fun process_mainmodule(mainmodule, mmodules)
        do
-               var doc = new DocModel(mainmodule.model, mainmodule)
+               var min_visibility = private_visibility
+               if not toolcontext.opt_private.value then min_visibility = protected_visibility
+               var accept_attribute = true
+               if toolcontext.opt_no_attributes.value then accept_attribute = false
+
+               var filters = new ModelFilter(
+                       min_visibility,
+                       accept_attribute = accept_attribute,
+                       accept_fictive = false)
+               var doc = new DocModel(mainmodule.model, mainmodule, filters)
 
                var phases = [
-                       new ExtractionPhase(toolcontext, doc),
                        new IndexingPhase(toolcontext, doc),
                        new MakePagePhase(toolcontext, doc),
                        new POSetPhase(toolcontext, doc),
@@ -53,33 +63,13 @@ private class Nitdoc
                        new LinListPhase(toolcontext, doc),
                        new GraphPhase(toolcontext, doc),
                        new ReadmePhase(toolcontext, doc),
-                       new RenderHTMLPhase(toolcontext, doc): DocPhase]
+                       new RenderHTMLPhase(toolcontext, doc),
+                       new DocTestPhase(toolcontext, doc): DocPhase]
 
                for phase in phases do
                        toolcontext.info("# {phase.class_name}", 1)
                        phase.apply
                end
-
-               if toolcontext.opt_test.value then
-                       # Pages metrics
-                       var page_counter = new Counter[String]
-                       var pages = doc.pages.keys.to_a
-                       default_comparator.sort(pages)
-                       for title in pages do
-                               var page = doc.pages[title]
-                               page_counter.inc page.class_name
-                               print page.pretty_print.write_to_string
-                       end
-                       print "Generated {doc.pages.length} pages"
-                       page_counter.print_elements(100)
-                       # Model metrics
-                       var model_counter = new Counter[String]
-                       for mentity in doc.mentities do
-                               model_counter.inc mentity.class_name
-                       end
-                       print "Found {doc.mentities.length} mentities"
-                       model_counter.print_elements(100)
-               end
        end
 end