src/doc: move the testing option to its own doc_phase.
authorAlexandre Terrasa <alexandre@moz-code.org>
Mon, 19 Oct 2015 23:01:20 +0000 (19:01 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Mon, 19 Oct 2015 23:01:20 +0000 (19:01 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

src/doc/doc_phases/doc_phases.nit
src/doc/doc_phases/doc_test.nit [new file with mode: 0644]
src/nitdoc.nit

index fefd1ac..24969e4 100644 (file)
@@ -19,3 +19,4 @@ module doc_phases
 
 import doc_html
 import doc_indexing
+import doc_test
diff --git a/src/doc/doc_phases/doc_test.nit b/src/doc/doc_phases/doc_test.nit
new file mode 100644 (file)
index 0000000..ddb5eb7
--- /dev/null
@@ -0,0 +1,59 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Print the generated DocModel in stdout.
+#
+# Mainly used for tests.
+module doc_test
+
+import doc_structure
+import counter
+
+redef class ToolContext
+
+       # File pattern used to link documentation to source code.
+       var opt_test = new OptionBool("print test data", "--test")
+
+       redef init do
+               super
+               option_context.add_option(opt_test)
+       end
+end
+
+# Display the DocModel in stdout.
+class DocTestPhase
+       super DocPhase
+
+       redef fun apply do
+               if not ctx.opt_test.value then return
+               # 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
index 1e6059b..2591863 100644 (file)
@@ -19,19 +19,12 @@ 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")
-
-       redef init do
-               super
-               option_context.add_option(opt_test)
-       end
+       init do super # to fix ambiguous linearization
 end
 
 # Nitdoc phase explores the model and generate pages for each mentities found
@@ -53,33 +46,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