nitdoc: migrate nitdoc from `doc_pages` to `doc_phases`
authorAlexandre Terrasa <alexandre@moz-code.org>
Wed, 4 Feb 2015 19:51:02 +0000 (20:51 +0100)
committerAlexandre Terrasa <alexandre@moz-code.org>
Wed, 4 Feb 2015 20:17:37 +0000 (21:17 +0100)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

src/doc/doc.nit
src/doc/doc_pages.nit
src/nitdoc.nit

index 19443b4..a6fb971 100644 (file)
@@ -12,8 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Nitdoc page generation
+# Nitdoc generation framework.
 module doc
 
-import doc_pages
-
+import doc_base
+import doc_phases
index c4a6ef7..b0d4405 100644 (file)
@@ -53,11 +53,6 @@ redef class ToolContext
                opts.add_option(opt_custom_title, opt_custom_footer, opt_custom_intro, opt_custom_brand)
                opts.add_option(opt_github_upstream, opt_github_base_sha1, opt_github_gitdir)
                opts.add_option(opt_piwik_tracker, opt_piwik_site_id)
-
-               var tpl = new Template
-               tpl.add "Usage: nitdoc [OPTION]... <file.nit>...\n"
-               tpl.add "Generates HTML pages of API documentation from Nit source files."
-               tooldescription = tpl.write_to_string
        end
 
        redef fun process_options(args) do
@@ -111,17 +106,6 @@ class Nitdoc
        var model: Model
        var mainmodule: MModule
 
-       fun generate do
-               init_output_dir
-               overview
-               search
-               groups
-               modules
-               classes
-               properties
-               quicksearch_list
-       end
-
        private fun init_output_dir do
                # create destination dir if it's necessary
                var output_dir = ctx.output_dir
@@ -144,55 +128,6 @@ class Nitdoc
                end
 
        end
-
-       private fun overview do
-               var page = new NitdocOverview(ctx, model, mainmodule)
-               page.render.write_to_file("{ctx.output_dir.to_s}/{page.page_url}")
-       end
-
-       private fun search do
-               var page = new NitdocSearch(ctx, model, mainmodule)
-               page.render.write_to_file("{ctx.output_dir.to_s}/{page.page_url}")
-       end
-
-       private fun groups do
-               for mproject in model.mprojects do
-                       for mgroup in mproject.mgroups.to_a do
-                               var page = new NitdocGroup(ctx, model, mainmodule, mgroup)
-                               page.render.write_to_file("{ctx.output_dir.to_s}/{page.page_url}")
-                       end
-               end
-       end
-
-       private fun modules do
-               for mmodule in model.mmodules do
-                       if mmodule.is_fictive or mmodule.is_test_suite then continue
-                       var page = new NitdocModule(ctx, model, mainmodule, mmodule)
-                       page.render.write_to_file("{ctx.output_dir.to_s}/{page.page_url}")
-               end
-       end
-
-       private fun classes do
-               for mclass in model.mclasses do
-                       if not ctx.filter_mclass(mclass) then continue
-                       var page = new NitdocClass(ctx, model, mainmodule, mclass)
-                       page.render.write_to_file("{ctx.output_dir.to_s}/{page.page_url}")
-               end
-       end
-
-       private fun properties do
-               for mproperty in model.mproperties do
-                       if not ctx.filter_mproperty(mproperty) then continue
-                       if mproperty isa MInnerClass then continue
-                       var page = new NitdocProperty(ctx, model, mainmodule, mproperty)
-                       page.render.write_to_file("{ctx.output_dir.to_s}/{page.page_url}")
-               end
-       end
-
-       private fun quicksearch_list do
-               var quicksearch = new QuickSearch(ctx, model)
-               quicksearch.render.write_to_file("{ctx.output_dir.to_s}/quicksearch-list.js")
-       end
 end
 
 # Nitdoc QuickSearch list generator
index c1a4851..d267544 100644 (file)
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 # Documentation generator for the nit language.
+#
 # Generate API documentation in HTML format from nit source code.
 module nitdoc
 
@@ -20,21 +21,34 @@ import modelbuilder
 import doc
 
 redef class ToolContext
-       var docphase: Phase = new NitdocPhase(self, null)
+       # Nitdoc generation phase.
+       var docphase: Phase = new Nitdoc(self, null)
 end
 
-private class NitdocPhase
+# Nitdoc phase explores the model and generate pages for each mentities found
+private class Nitdoc
        super Phase
        redef fun process_mainmodule(mainmodule, mmodules)
        do
-               # generate doc
-               var nitdoc = new Nitdoc(toolcontext, mainmodule.model, mainmodule)
-               nitdoc.generate
+               var doc = new DocModel(mainmodule.model, mainmodule)
+
+               var phases = new Array[DocPhase]
+
+               for phase in phases do
+                       toolcontext.info("# {phase.class_name}", 1)
+                       phase.apply
+               end
        end
 end
 
-# process options
+# build toolcontext
 var toolcontext = new ToolContext
+var tpl = new Template
+tpl.add "Usage: nitdoc [OPTION]... <file.nit>...\n"
+tpl.add "Generates HTML pages of API documentation from Nit source files."
+toolcontext.tooldescription = tpl.write_to_string
+
+# process options
 toolcontext.process_options(args)
 var arguments = toolcontext.option_context.rest
 
@@ -43,6 +57,7 @@ var model = new Model
 var mbuilder = new ModelBuilder(model, toolcontext)
 var mmodules = mbuilder.parse_full(arguments)
 
+# process
 if mmodules.is_empty then return
 mbuilder.run_phases
 toolcontext.run_global_phases(mmodules)