Nitdoc phase explores the model and generate pages for each mentity found

Introduced properties

init defaultinit(toolcontext: ToolContext, depends: nullable Collection[Phase])

nitc :: Nitdoc :: defaultinit

Redefined properties

redef type SELF: Nitdoc

nitc $ Nitdoc :: SELF

Type of this instance, automatically specialized in every class
redef fun process_mainmodule(mainmodule: MModule, mmodules: SequenceRead[MModule])

nitc $ Nitdoc :: process_mainmodule

Specific action to execute on the whole program.

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
private var _depends: nullable Collection[Phase]

nitc :: Phase :: _depends

The explicit dependences, used to initialize in_importation
private var _disabled: Bool

nitc :: Phase :: _disabled

Is the phase globally disabled?
private var _in_hierarchy: POSetElement[Phase]

nitc :: Phase :: _in_hierarchy

The dependence relation of the phase with the other phases
private var _toolcontext: ToolContext

nitc :: Phase :: _toolcontext

The toolcontext instance attached to the phase
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
init defaultinit(toolcontext: ToolContext, depends: nullable Collection[Phase])

nitc :: Nitdoc :: defaultinit

init defaultinit(toolcontext: ToolContext, depends: nullable Collection[Phase])

nitc :: Phase :: defaultinit

fun depends: nullable Collection[Phase]

nitc :: Phase :: depends

The explicit dependences, used to initialize in_importation
protected fun depends=(depends: nullable Collection[Phase])

nitc :: Phase :: depends=

The explicit dependences, used to initialize in_importation
fun disabled: Bool

nitc :: Phase :: disabled

Is the phase globally disabled?
fun disabled=(disabled: Bool)

nitc :: Phase :: disabled=

Is the phase globally disabled?
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
fun in_hierarchy: POSetElement[Phase]

nitc :: Phase :: in_hierarchy

The dependence relation of the phase with the other phases
protected fun in_hierarchy=(in_hierarchy: POSetElement[Phase])

nitc :: Phase :: in_hierarchy=

The dependence relation of the phase with the other phases
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
private intern fun native_class_name: CString

core :: Object :: native_class_name

The class name of the object in CString format.
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun process_annotated_node(node: ANode, nat: AAnnotation)

nitc :: Phase :: process_annotated_node

Specific actions to execute on annotated nodes
fun process_mainmodule(mainmodule: MModule, given_mmodules: SequenceRead[MModule])

nitc :: Phase :: process_mainmodule

Specific action to execute on the whole program.
fun process_nclassdef(nclassdef: AClassdef)

nitc :: Phase :: process_nclassdef

Specific actions to execute on the tree of a class definition
fun process_nmodule(nmodule: AModule)

nitc :: Phase :: process_nmodule

Specific actions to execute on the whole tree of a module
fun process_nmodule_after(nmodule: AModule)

nitc :: Phase :: process_nmodule_after

Specific actions to execute on the whole tree of a module
fun process_npropdef(npropdef: APropdef)

nitc :: Phase :: process_npropdef

Specific actions to execute on the tree of a property
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun toolcontext: ToolContext

nitc :: Phase :: toolcontext

The toolcontext instance attached to the phase
protected fun toolcontext=(toolcontext: ToolContext)

nitc :: Phase :: toolcontext=

The toolcontext instance attached to the phase
package_diagram nitc::nitdoc::Nitdoc Nitdoc nitc::Phase Phase nitc::nitdoc::Nitdoc->nitc::Phase core::Object Object nitc::Phase->core::Object ...core::Object ... ...core::Object->core::Object

Ancestors

interface Object

core :: Object

The root of the class hierarchy.

Parents

abstract class Phase

nitc :: Phase

Abstraction of steps in the analysis/processing of Nit programs

Class definitions

nitc $ Nitdoc
# 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