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
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
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
# limitations under the License.
# Documentation generator for the nit language.
+#
# Generate API documentation in HTML format from nit source code.
module nitdoc
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
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)