model: use the robust `intro_mmodule` instead of `intro.mmodule`.
[nit.git] / src / doc / doc_base.nit
index 3bb736e..29efa62 100644 (file)
@@ -16,7 +16,6 @@
 module doc_base
 
 import toolcontext
-import model_utils
 import model_ext
 
 # The model of a Nitdoc documentation.
@@ -75,6 +74,16 @@ class DocPage
        var root = new DocRoot
 
        redef fun to_s do return title
+
+       # Pretty prints the content of this page.
+       fun pretty_print: Writable do
+               var res = new Template
+               res.addn "{class_name} {title}"
+               for child in root.children do
+                       child.pretty_print_in(res)
+               end
+               return res
+       end
 end
 
 # `DocPage` elements that can be nested in another.
@@ -102,7 +111,7 @@ abstract class DocComposite
        var id: String is writable
 
        # Item title if any.
-       var title: nullable String
+       var title: nullable String is writable
 
        # Does `self` have a `parent`?
        fun is_root: Bool do return parent == null
@@ -112,8 +121,18 @@ abstract class DocComposite
        # Children are ordered, this order can be changed by the `DocPhase`.
        var children = new Array[DocComposite]
 
-       # Does `self` have `children`?
-       fun is_empty: Bool do return children.is_empty
+       # Is `self` not displayed in the page.
+       #
+       # By default, empty elements are hidden.
+       fun is_hidden: Bool do return children.is_empty
+
+       # Title used in table of content if any.
+       var toc_title: nullable String is writable, lazy do return title
+
+       # Is `self` hidden in the table of content?
+       var is_toc_hidden: Bool is writable, lazy do
+               return toc_title == null or is_hidden
+       end
 
        # Add a `child` to `self`.
        #
@@ -128,6 +147,21 @@ abstract class DocComposite
                if parent == null then return 0
                return parent.depth + 1
        end
+
+       # Pretty prints this composite recursively.
+       fun pretty_print: Writable do
+               var res = new Template
+               pretty_print_in(res)
+               return res
+       end
+
+       # Appends the Pretty print of this composite in `res`.
+       private fun pretty_print_in(res: Template) do
+               res.add "\t" * depth
+               res.add "#" * depth
+               res.addn " {id}"
+               for child in children do child.pretty_print_in(res)
+       end
 end
 
 # The `DocComposite` element that contains all the other.