Base entities shared by all the nitdoc code

Introduced classes

class DocModel

nitc :: DocModel

The model of a Nitdoc documentation
class DocPage

nitc :: DocPage

A documentation page abstraction
class DocSidebar

nitc :: DocSidebar

Nitdoc sidebar abstraction
class DocTab

nitc :: DocTab

A documentation tabulated view
class PageHome

nitc :: PageHome

The Nitdoc overview page that displays the nit packages catalog
class PageMClass

nitc :: PageMClass

A documentation page about a MClass
abstract class PageMEntity

nitc :: PageMEntity

A DocPage documenting a MEntity
class PageMGroup

nitc :: PageMGroup

A documentation page about a MGroup
class PageMModule

nitc :: PageMModule

A documentation page about a MModule
class PageMPackage

nitc :: PageMPackage

A documentation page for a MPackage
class PageMProperty

nitc :: PageMProperty

A documentation page about a MProperty
class PagePerson

nitc :: PagePerson

A page that lists the packages maintained and contributed by a person
class PageTag

nitc :: PageTag

A page that lists the packages related to a tab

Redefined classes

redef class MClass

nitc :: static_base $ MClass

A named class
redef class MClassDef

nitc :: static_base $ MClassDef

A definition (an introduction or a refinement) of a class in a module
redef abstract class MEntity

nitc :: static_base $ MEntity

A named and possibly documented entity in the model.
redef class MGroup

nitc :: static_base $ MGroup

A group of modules in a package
redef class MModule

nitc :: static_base $ MModule

A Nit module is usually associated with a Nit source file.
redef class MPackage

nitc :: static_base $ MPackage

A Nit package, that encompass a product
redef abstract class MPropDef

nitc :: static_base $ MPropDef

A definition of a property (local property)
redef abstract class MProperty

nitc :: static_base $ MProperty

A service (global property) that generalize method, attribute, etc.

All class definitions

class DocModel

nitc $ DocModel

The model of a Nitdoc documentation
class DocPage

nitc $ DocPage

A documentation page abstraction
class DocSidebar

nitc $ DocSidebar

Nitdoc sidebar abstraction
class DocTab

nitc $ DocTab

A documentation tabulated view
redef class MClass

nitc :: static_base $ MClass

A named class
redef class MClassDef

nitc :: static_base $ MClassDef

A definition (an introduction or a refinement) of a class in a module
redef abstract class MEntity

nitc :: static_base $ MEntity

A named and possibly documented entity in the model.
redef class MGroup

nitc :: static_base $ MGroup

A group of modules in a package
redef class MModule

nitc :: static_base $ MModule

A Nit module is usually associated with a Nit source file.
redef class MPackage

nitc :: static_base $ MPackage

A Nit package, that encompass a product
redef abstract class MPropDef

nitc :: static_base $ MPropDef

A definition of a property (local property)
redef abstract class MProperty

nitc :: static_base $ MProperty

A service (global property) that generalize method, attribute, etc.
class PageHome

nitc $ PageHome

The Nitdoc overview page that displays the nit packages catalog
class PageMClass

nitc $ PageMClass

A documentation page about a MClass
abstract class PageMEntity

nitc $ PageMEntity

A DocPage documenting a MEntity
class PageMGroup

nitc $ PageMGroup

A documentation page about a MGroup
class PageMModule

nitc $ PageMModule

A documentation page about a MModule
class PageMPackage

nitc $ PageMPackage

A documentation page for a MPackage
class PageMProperty

nitc $ PageMProperty

A documentation page about a MProperty
class PagePerson

nitc $ PagePerson

A page that lists the packages maintained and contributed by a person
class PageTag

nitc $ PageTag

A page that lists the packages related to a tab
package_diagram nitc::static_base static_base nitc::static_cards static_cards nitc::static_base->nitc::static_cards nitc::html_commands html_commands nitc::static_cards->nitc::html_commands ...nitc::html_commands ... ...nitc::html_commands->nitc::html_commands nitc::static_structure static_structure nitc::static_structure->nitc::static_base nitc::static_html static_html nitc::static_html->nitc::static_structure nitc::static_html... ... nitc::static_html...->nitc::static_html

Ancestors

module abstract_collection

core :: abstract_collection

Abstract collection classes and services.
module abstract_text

core :: abstract_text

Abstract class for manipulation of sequences of characters
module abstract_tree

trees :: abstract_tree

Introduce tree structures abstraction
module actors_injection_phase

nitc :: actors_injection_phase

Injects model for the classes annotated with "is actor" so
module annotation

nitc :: annotation

Management and utilities on annotations
module array

core :: array

This module introduces the standard array structure.
module astbuilder

nitc :: astbuilder

Instantiation and transformation of semantic nodes in the AST of expressions and statements
module astutil

nitc :: astutil

Additional features on Nit AST
module auto_super_init

nitc :: auto_super_init

Computing of super-constructors that must be implicitly called at the begin of constructors.
module bintree

trees :: bintree

Binary Tree data-structure
module bitset

core :: bitset

Services to handle BitSet
module bktree

trees :: bktree

Implementation of BKTree
module bootstrap

html :: bootstrap

HTML templates for Bootstrap components.
module bytes

core :: bytes

Services for byte streams and arrays
module caching

serialization :: caching

Services for caching serialization engines
module catalog

nitc :: catalog

Basic catalog generator for Nit packages
module check_annotation

nitc :: check_annotation

Check that annotation present in the AST are either primitive or user-declared
module circular_array

core :: circular_array

Efficient data structure to access both end of the sequence.
module codec_base

core :: codec_base

Base for codecs to use with streams
module codecs

core :: codecs

Group module for all codec-related manipulations
module collection

core :: collection

This module define several collection classes.
module commands_base

nitc :: commands_base

Documentation commands
module commands_catalog

nitc :: commands_catalog

Commands to retrieve Catalog related data
module commands_docdown

nitc :: commands_docdown

Doc down related queries
module commands_graph

nitc :: commands_graph

Graph commands
module commands_model

nitc :: commands_model

Doc commands about a Model or a MEntity
module commands_parser

nitc :: commands_parser

A parser that create DocCommand from a string
module commands_usage

nitc :: commands_usage

Commands about how mentities are used
module console

console :: console

Defines some ANSI Terminal Control Escape Sequences.
module core

core :: core

Standard classes and methods used by default by Nit programs and libraries.
module counter

counter :: counter

Simple numerical statistical analysis and presentation
module deriving

nitc :: deriving

Injection of automatic method definitions for standard methods, based on the attributes of the classes
module digraph

graph :: digraph

Implementation of directed graphs, also called digraphs.
module div_by_zero

nitc :: div_by_zero

Detection of divisions by zero in obvious cases
module dot

dot :: dot

Dot rendering library
module engine_tools

serialization :: engine_tools

Advanced services for serialization engines
module environ

core :: environ

Access to the environment variables of the process
module error

core :: error

Standard error-management infrastructure.
module exec

core :: exec

Invocation and management of operating system sub-processes.
module file

core :: file

File manipulations (create, read, write, etc.)
module fixed_ints

core :: fixed_ints

Basic integers of fixed-precision
module fixed_ints_text

core :: fixed_ints_text

Text services to complement fixed_ints
module flat

core :: flat

All the array-based text representations
module flow

nitc :: flow

Intraprocedural static flow.
module frontend

nitc :: frontend

Collect and orchestration of main frontend phases
module gc

core :: gc

Access to the Nit internal garbage collection mechanism
module glsl_validation

nitc :: glsl_validation

Check shader code within Nit modules using the tool glslangValidator
module hash_collection

core :: hash_collection

Introduce HashMap and HashSet.
module highlight

nitc :: highlight

Highlighting of Nit AST
module html

html :: html

HTML output facilities
module html_commands

nitc :: html_commands

Render commands results as HTML
module html_model

nitc :: html_model

Translate mentities to html blocks.
module htmlight

nitc :: htmlight

Highlighting of Nit AST with HTML
module i18n_phase

nitc :: i18n_phase

Basic support of internationalization through the generation of id-to-string tables
module ini

ini :: ini

Read and write INI configuration files
module inspect

serialization :: inspect

Refine Serializable::inspect to show more useful information
module iso8859_1

core :: iso8859_1

Codec for ISO8859-1 I/O
module kernel

core :: kernel

Most basic classes and methods.
module lexer

nitc :: lexer

Lexer and its tokens.
module lexer_work

nitc :: lexer_work

Internal algorithm and data structures for the Nit lexer
module list

core :: list

This module handle double linked lists
module literal

nitc :: literal

Parsing of literal values in the abstract syntax tree.
module loader

nitc :: loader

Loading of Nit source files
module local_var_init

nitc :: local_var_init

Verify that local variables are initialized before their usage
module location

nitc :: location

Nit source-file and locations in source-file
module markdown

markdown :: markdown

Markdown parsing.
module math

core :: math

Mathematical operations
module md5

md5 :: md5

Native MD5 digest implementation as Text::md5
module md_commands

nitc :: md_commands

Render commands results as Markdown
module mdoc

nitc :: mdoc

Documentation of model entities
module meta

meta :: meta

Simple user-defined meta-level to manipulate types of instances as object.
module mmodule

nitc :: mmodule

modules and module hierarchies in the metamodel
module mmodule_data

nitc :: mmodule_data

Define and retrieve data in modules
module model

nitc :: model

Classes, types and properties
module model_base

nitc :: model_base

The abstract concept of model and related common things
module model_collect

nitc :: model_collect

Collect things from the model.
module model_examples

nitc :: model_examples

Examples for Model entities
module model_index

nitc :: model_index

Search things from the Model
module modelbuilder_base

nitc :: modelbuilder_base

Load nit source files and build the associated model
module modelize

nitc :: modelize

Create a model from nit source files
module modelize_class

nitc :: modelize_class

Analysis and verification of class definitions to instantiate model element
module modelize_property

nitc :: modelize_property

Analysis and verification of property definitions to instantiate model element
module more_collections

more_collections :: more_collections

Highly specific, but useful, collections-related classes.
module mpackage

nitc :: mpackage

Modelisation of a Nit package
module native

core :: native

Native structures for text and bytes
module nitpm_shared

nitc :: nitpm_shared

Services related to the Nit package manager
module no_warning

nitc :: no_warning

Fill toolcontext information about blacklisting of warnings.
module numeric

core :: numeric

Advanced services for Numeric types
module opts

opts :: opts

Management of options on the command line
module ordered_tree

ordered_tree :: ordered_tree

Manipulation and presentation of ordered trees.
module parallelization_phase

nitc :: parallelization_phase

Phase generating threads for functions annotated with threaded annotation
module parse_annotations

nitc :: parse_annotations

Simple annotation parsing
module parser

nitc :: parser

Parser.
module parser_nodes

nitc :: parser_nodes

AST nodes of the Nit language
module parser_prod

nitc :: parser_prod

Production AST nodes full definition.
module parser_util

nitc :: parser_util

Utils and tools related to parsers and AST
module parser_work

nitc :: parser_work

Internal algorithm and data structures for the Nit parser
module phase

nitc :: phase

Phases of the processing of nit programs
module pipeline

pipeline :: pipeline

Pipelined filters and operations on iterators.
module poset

poset :: poset

Pre order sets and partial order set (ie hierarchies)
module protocol

core :: protocol

module queue

core :: queue

Queuing data structures and wrappers
module range

core :: range

Module for range of discrete objects.
module rbtree

trees :: rbtree

A red–black tree is a data structure which is a type of self-balancing binary search tree.
module re

core :: re

Regular expression support for all services based on Pattern
module regex_phase

nitc :: regex_phase

Check for error in regular expressions from string literals
module ropes

core :: ropes

Tree-based representation of a String.
module scope

nitc :: scope

Identification and scoping of local variables and labels.
module semantize

nitc :: semantize

Process bodies of methods in regard with the model.
module serialization

serialization :: serialization

General serialization services
module serialization_core

serialization :: serialization_core

Abstract services to serialize Nit objects to different formats
module serialization_model_phase

nitc :: serialization_model_phase

Phase generating methods (model-only) to serialize Nit objects
module simple_misc_analysis

nitc :: simple_misc_analysis

Simple vavious processing on a AST
module sorter

core :: sorter

This module contains classes used to compare things and sorts arrays.
module stream

core :: stream

Input and output streams of characters
module tables

nitc :: tables

Module that interfaces the parsing tables.
module template

template :: template

Basic template system
module text

core :: text

All the classes and methods related to the manipulation of text entities
module time

core :: time

Management of time and dates
module toolcontext

nitc :: toolcontext

Common command-line tool infrastructure than handle options and error messages
module trees

trees :: trees

General module for tree data structures
module trie

trees :: trie

A trie (or prefix tree) is a datastructure used to perform prefix searches.
module typing

nitc :: typing

Intraprocedural resolution of static types and OO-services
module uml

nitc :: uml

Group head module for UML generation services
module uml_base

nitc :: uml_base

Exposes the base class for UML generation of a Model
module uml_class

nitc :: uml_class

Provides facilities of exporting a Model to a UML class diagram
module uml_module

nitc :: uml_module

Services for generation of a UML package diagram based on a Model
module union_find

core :: union_find

union–find algorithm using an efficient disjoint-set data structure
module utf8

core :: utf8

Codec for UTF-8 I/O
module version

nitc :: version

This file was generated by git-gen-version.sh

Parents

module static_cards

nitc :: static_cards

Cards templates for the static documentation

Children

module static_structure

nitc :: static_structure

Composes the pages of the static documentation

Descendants

module a_star-m

a_star-m

module nitdoc

nitc :: nitdoc

Generator of static API documentation for the Nit language
module static

nitc :: static

Nitdoc generation framework
module static_html

nitc :: static_html

Render documentation pages as HTML
module static_index

nitc :: static_index

Manage indexing of Nit model for Nitdoc QuickSearch.
# Base entities shared by all the nitdoc code
module static_base

import static_cards
import modelize

# The model of a Nitdoc documentation
class DocModel

	# Model used to select entities
	var model: Model

	# Mainmodule to resolve linearization
	var mainmodule: MModule

	# ModelBuilder used to retrieve AST nodes
	var modelbuilder: ModelBuilder

	# Catalog for building the homepage
	var catalog: Catalog

	# Model filters applied to the whole documentation
	var filter: ModelFilter

	# Specific Markdown processor to use within Nitdoc
	var md_processor: MarkdownProcessor is lazy do
		var parser = new CommandParser(model, mainmodule, modelbuilder, catalog)
		var proc = new CmdMarkdownProcessor(parser)
		proc.decorator = new CmdDecorator(model)
		return proc
	end

	# Specific Markdown processor to use within Nitdoc
	var inline_processor: MarkdownProcessor is lazy do
		var parser = new CommandParser(model, mainmodule, modelbuilder, catalog)
		var proc = new CmdMarkdownProcessor(parser)
		proc.decorator = new CmdInlineDecorator(model)
		return proc
	end

	# Do not generate dot graphs
	var no_dot = false is writable

	# Do not generate higlighted code
	var no_code = false is writable

	# Url to code when `no_code` is true
	var code_url: nullable String = null is writable

	# Url to assets
	var share_url: nullable String = null is writable

	# Custom menu brand
	var custom_brand: nullable String = null is writable

	# Custom homepage title
	var custom_title: nullable String = null is writable

	# Custom page footer
	var custom_footer: nullable String = null is writable

	# Custom homepage intro text
	var custom_intro: nullable String = null is writable

	# Optional tracker url
	var tracker_url: nullable String = null is writable

	# Optional tracker site id
	var piwik_site_id: nullable String = null is writable

	# Used to sort sidebar elements by name.
	var name_sorter = new MEntityNameSorter
end

# Documentation pages

# A documentation page abstraction
class DocPage

	# Title of this page
	var title: String is writable

	# Page tab panels
	#
	# Nitdoc pages are tabulated.
	# If a page has only one tab, it is presented as a single page.
	# With more than one tab, the HTML rendering process adds tab headers and
	# links.
	var tabs: Array[DocTab] = [main_tab] is lazy

	# The page main tab
	#
	# For most pages this tab is suffisent.
	# Subclasses can add more tabs.
	var main_tab = new DocTab("main", "Main")

	redef fun to_s do return title
end

# The Nitdoc overview page that displays the nit packages catalog
class PageHome
	super DocPage
end

# A DocPage documenting a MEntity
abstract class PageMEntity
	super DocPage
	autoinit mentity

	new(mentity: MEntity) do
		if mentity isa MPackage then
			return new PageMPackage(mentity)
		else if mentity isa MGroup then
			return new PageMGroup(mentity)
		else if mentity isa MModule then
			return new PageMModule(mentity)
		else if mentity isa MClass then
			return new PageMClass(mentity)
		else if mentity isa MProperty then
			return new PageMProperty(mentity)
		else
			print "Not yet implemented: Page for {mentity.full_name} ({mentity.class_name})"
			abort
		end
	end

	# Type of MEntity documented by this page
	type MENTITY: MEntity

	# MEntity documented by this page
	var mentity: MENTITY

	# For mentities the main tab is the doc tab
	redef var main_tab = new DocTab("doc", "Doc", true, "book")

	# API tab
	#
	# Where the MEntity API (groups, modules, classes, props) is displayed
	var api_tab = new DocTab("api", "API", false, "list")

	# Dependencies tab
	#
	# Where the MEntity importation or inheritance is displayed
	var dep_tab = new DocTab("inh", "Dependencies", false, "object-align-vertical")

	# Code tab
	#
	# Since all mentities does not have code, this tab in not in the `tabs` list
	# by default.
	var code_tab = new DocTab("code", "Code", false, "console")

	# Lienarization tab
	#
	# Since all mentities does not have a linearization, this tab in not in the
	# `tabs` list by default.
	var lin_tab = new DocTab("lin", "Linearization", false, "arrow-down")

	redef var tabs = [main_tab, api_tab, dep_tab] is lazy
	redef var title is lazy do return mentity.name
end

# A documentation page for a MPackage
class PageMPackage
	super PageMEntity

	redef type MENTITY: MPackage
	redef var api_tab = new DocTab("api", "Groups & Modules", false, "list")
end

# A documentation page about a MGroup
class PageMGroup
	super PageMEntity

	redef type MENTITY: MGroup
	redef var api_tab = new DocTab("api", "Subgroups & Modules", false, "list")
end

# A documentation page about a MModule
class PageMModule
	super PageMEntity

	redef type MENTITY: MModule
	redef var api_tab = new DocTab("api", "Classes", false, "list")
	redef var dep_tab = new DocTab("inh", "Importation", false, "object-align-vertical")
	redef var tabs = [main_tab, api_tab, dep_tab, code_tab] is lazy
end

# A documentation page about a MClass
class PageMClass
	super PageMEntity

	redef type MENTITY: MClass
	redef var api_tab = new DocTab("api", "All properties", false, "list")
	redef var dep_tab = new DocTab("inh", "Inheritance", false, "object-align-vertical")
	redef var tabs = [main_tab, api_tab, dep_tab, lin_tab] is lazy
end

# A documentation page about a MProperty
class PageMProperty
	super PageMEntity

	redef type MENTITY: MProperty
	redef var tabs = [main_tab, lin_tab] is lazy
end

# A page that lists the packages maintained and contributed by a person
class PagePerson
	super DocPage
	autoinit person

	# Person displayed in this page
	var person: Person

	redef var title is lazy do return person.name
end

# A page that lists the packages related to a tab
class PageTag
	super DocPage
	autoinit tag

	# Tag displayed in this page
	var tag: String

	redef var title is lazy do return tag
end

# Breadcrumbs

redef class MEntity
	# MEntities composing the breadcrumbs of a nitdoc page
	fun nitdoc_breadcrumbs: Array[MEntity] is abstract
end

redef class MPackage
	redef var nitdoc_breadcrumbs = [self: MEntity] is lazy
end

redef class MGroup
	redef var nitdoc_breadcrumbs is lazy do
		var parent = self.parent
		if parent != null then
			return parent.nitdoc_breadcrumbs + [self]
		end
		return mpackage.nitdoc_breadcrumbs
	end
end

redef class MModule
	redef var nitdoc_breadcrumbs is lazy do
		var mgroup = self.mgroup
		if mgroup != null then
			return mgroup.nitdoc_breadcrumbs + [self]
		end
		return [self]
	end
end

redef class MClass
	redef var nitdoc_breadcrumbs is lazy do
		return intro_mmodule.nitdoc_breadcrumbs + [self]
	end
end

redef class MClassDef
	redef var nitdoc_breadcrumbs is lazy do
		var res = new Array[MEntity].from(mmodule.nitdoc_breadcrumbs)
		res.add self
		return res
	end
end

redef class MProperty
	redef var nitdoc_breadcrumbs is lazy do
		var res = new Array[MEntity].from(intro_mclassdef.mclass.nitdoc_breadcrumbs)
		res.add self
		return res
	end
end

redef class MPropDef
	redef var nitdoc_breadcrumbs is lazy do
		var res = new Array[MEntity].from(mclassdef.nitdoc_breadcrumbs)
		res.add self
		return res
	end
end

# Documentation base elements

# A documentation tabulated view
class DocTab

	# Tab uniq id in the page
	var id: String is writable

	# Table title
	var title: String is writable

	# Is this tab displayed by default?
	var is_active = false is optional, writable

	# Tab header icon
	var icon: nullable String = null is optional, writable

	# Tab content
	var content = new Array[StaticCard]

	# Tab sidebar
	var sidebar = new DocSidebar

	# Tab metadata sidebar
	var metadata = new DocSidebar

	# Is this tab empty?
	fun is_empty: Bool do return content.is_empty
end

# A fictive tab used to display a link
class DocTabLink
	super DocTab
	autoinit(id, title, icon, url)

	# Link to open when the tab is clicked
	var url: String
end

# Nitdoc sidebar abstraction
class DocSidebar

	# A sidebar contains `StaticCard`
	var cards = new Array[StaticCard]

	# Is this sidebar empty?
	fun is_empty: Bool do return cards.is_empty
end
src/doc/static/static_base.nit:15,1--350,3