nitc :: Nitdoc :: defaultinit
nitc $ Nitdoc :: process_mainmodule
Specific action to execute on the whole program.nitc :: Phase :: _in_hierarchy
The dependence relation of the phase with the other phasesnitc :: Phase :: _toolcontext
The toolcontext instance attached to the phasecore :: Object :: class_factory
Implementation used byget_class
to create the specific class.
nitc :: Nitdoc :: defaultinit
nitc :: Phase :: defaultinit
core :: Object :: defaultinit
nitc :: Phase :: in_hierarchy
The dependence relation of the phase with the other phasesnitc :: Phase :: in_hierarchy=
The dependence relation of the phase with the other phasescore :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
core :: Object :: native_class_name
The class name of the object in CString format.core :: Object :: output_class_name
Display class name on stdout (debug only).nitc :: Phase :: process_annotated_node
Specific actions to execute on annotated nodesnitc :: Phase :: process_mainmodule
Specific action to execute on the whole program.nitc :: Phase :: process_nclassdef
Specific actions to execute on the tree of a class definitionnitc :: Phase :: process_nmodule
Specific actions to execute on the whole tree of a modulenitc :: Phase :: process_nmodule_after
Specific actions to execute on the whole tree of a modulenitc :: Phase :: process_npropdef
Specific actions to execute on the tree of a propertynitc :: Phase :: toolcontext
The toolcontext instance attached to the phasenitc :: Phase :: toolcontext=
The toolcontext instance attached to the phase
# Nitdoc phase explores the model and generate pages for each mentity found
private class Nitdoc
super Phase
redef fun process_mainmodule(mainmodule, mmodules)
do
var modelbuilder = toolcontext.modelbuilder
var model = modelbuilder.model
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 catalog = new Catalog(toolcontext.modelbuilder)
catalog.build_catalog(mainmodule.model.mpackages)
var filter = new ModelFilter(
min_visibility,
accept_attribute = accept_attribute,
accept_fictive = true,
accept_generated = true,
accept_test = false,
accept_redef = true,
accept_extern = true,
accept_empty_doc = true,
accept_example = true,
accept_broken = false)
var doc = new DocModel(model, mainmodule, modelbuilder, catalog, filter)
model.nitdoc_md_processor = doc.md_processor
doc.no_dot = toolcontext.opt_nodot.value
doc.no_code = toolcontext.opt_nocode.value
doc.code_url = toolcontext.opt_source.value
doc.share_url = toolcontext.opt_shareurl.value
doc.custom_brand = toolcontext.opt_custom_brand.value
doc.custom_title = toolcontext.opt_custom_title.value
doc.custom_footer = toolcontext.opt_custom_footer.value
doc.custom_intro = toolcontext.opt_custom_intro.value
doc.tracker_url = toolcontext.opt_piwik_tracker.value
doc.piwik_site_id = toolcontext.opt_piwik_site_id.value
# Prepare output dir
var test_mode = toolcontext.opt_test.value
var no_render = toolcontext.opt_norender.value
var output_dir = toolcontext.opt_dir.value or else "doc"
if not no_render then
output_dir.mkdir
# Copy assets
var share_dir = toolcontext.opt_share_dir.value or else "{toolcontext.share_dir}/nitdoc"
sys.system("cp -r -- {share_dir.escape_to_sh}/* {output_dir.escape_to_sh}/")
end
# Collect model to document
var mpackages = model.collect_mpackages(filter)
var mgroups = model.collect_mgroups(filter)
var nmodules = model.collect_mmodules(filter)
var mclasses = model.collect_mclasses(filter)
var mprops = model.collect_mproperties(filter)
var mentities = new Array[MEntity]
mentities.add_all mpackages
mentities.add_all mgroups
mentities.add_all nmodules
mentities.add_all mclasses
mentities.add_all mprops
var persons = doc.catalog.persons
var tags = doc.catalog.tag2proj.keys
# Prepare progress bar
var count = 0
var pages = 1 # count homepage
pages += mentities.length
pages += persons.length
pages += tags.length
print "Generating documentation pages..."
var progress = new TermProgress(pages, 0)
if not test_mode then progress.display
# Make pages
count += 1
if not test_mode then progress.update(count, "homepage")
if not no_render then doc.gen_page(new PageHome("Overview"), output_dir)
for mentity in mentities do
count += 1
if not test_mode then progress.update(count, "page {count}/{pages}")
if not no_render then doc.gen_page(new PageMEntity(mentity), output_dir)
end
for name, person in persons do
count += 1
if not test_mode then progress.update(count, "page {count}/{pages}")
if not no_render then doc.gen_page(new PagePerson(person), output_dir)
end
for tag in tags do
count += 1
if not test_mode then progress.update(count, "page {count}/{pages}")
if not no_render then doc.gen_page(new PageTag(tag), output_dir)
end
if not test_mode then print "" # finalise progress
if not no_render then
doc.create_index_file("{output_dir}/quicksearch-list.js")
print "Documentation produced in `{output_dir}`"
end
if test_mode then
print "Generated {count}/{pages} pages"
print " PageHome: 1"
print " PageMPackage: {mpackages.length}"
print " PageMGroup: {mgroups.length}"
print " PageMModule: {nmodules.length}"
print " PageMClass: {mclasses.length}"
print " PageMProperty: {mprops.length}"
print " PagePerson: {persons.length}"
print " PageTag: {tags.length}"
end
end
end
src/nitdoc.nit:102,1--225,3