X-Git-Url: http://nitlanguage.org diff --git a/src/doc/html_templates/html_model.nit b/src/doc/html_templates/html_model.nit index a1e0283..46953d9 100644 --- a/src/doc/html_templates/html_model.nit +++ b/src/doc/html_templates/html_model.nit @@ -22,17 +22,6 @@ import html::bootstrap import ordered_tree redef class MEntity - # ID used as a HTML unique ID and in file names. - # - # **Must** match the following (POSIX ERE) regular expression: - # - # ~~~POSIX ERE - # ^[A-Za-z_][A-Za-z0-9._-]*$ - # ~~~ - # - # That way, the ID is always a valid URI component and a valid XML name. - fun nitdoc_id: String is abstract - # URL of this entity’s Nitdoc page. fun nitdoc_url: String is abstract @@ -117,6 +106,31 @@ redef class MEntity if mdoc == null then return null return mdoc.tpl_short_comment end + + # Icon that will be displayed before the title + fun html_icon: BSIcon do + var icon = new BSIcon("tag") + icon.css_classes.add_all(css_classes) + return icon + end + + # CSS classes used to decorate `self`. + # + # Mainly used for icons. + var css_classes = new Array[String] + + # A li element that can go in a `HTMLList`. + fun html_list_item: ListItem do + var tpl = new Template + tpl.add new DocHTMLLabel.with_classes(css_classes) + tpl.add html_link + var comment = html_short_comment + if comment != null then + tpl.add ": " + tpl.add comment + end + return new ListItem(tpl) + end end redef class MProject @@ -124,6 +138,7 @@ redef class MProject redef fun nitdoc_url do return root.nitdoc_url redef var html_modifiers = ["project"] redef fun html_namespace do return html_link + redef var css_classes = ["public"] end redef class MGroup @@ -150,6 +165,8 @@ redef class MGroup end return tpl end + + redef var css_classes = ["public"] end redef class MModule @@ -180,6 +197,8 @@ redef class MModule tpl.add html_link return tpl end + + redef var css_classes = ["public"] end redef class MClass @@ -221,6 +240,9 @@ redef class MClass # Returns `intro.html_signature`. fun html_signature: Template do return intro.html_signature + + redef fun html_icon do return intro.html_icon + redef fun css_classes do return intro.css_classes end redef class MClassDef @@ -249,14 +271,17 @@ redef class MClassDef # # For intro: `private abstract class Foo[E: Object]` # For redef: `redef class Foo[E]` - # TODO change the implementation to correspond to the comment. redef fun html_declaration do var tpl = new Template tpl.add "" tpl.add html_modifiers.join(" ") tpl.add " " tpl.add html_link - tpl.add html_signature + if is_intro then + tpl.add html_signature + else + tpl.add html_short_signature + end tpl.add "" return tpl end @@ -301,6 +326,14 @@ redef class MClassDef end return tpl end + + redef fun css_classes do + var set = new HashSet[String] + if is_intro then set.add "intro" + for m in mclass.intro.modifiers do set.add m.to_cmangle + for m in modifiers do set.add m.to_cmangle + return set.to_a + end end redef class MProperty @@ -325,6 +358,8 @@ redef class MProperty # Returns `intro.html_signature`. fun html_signature: Template do return intro.html_signature + + redef fun css_classes do return intro.css_classes end redef class MPropDef @@ -352,14 +387,18 @@ redef class MPropDef # # For intro: `private fun foo(e: Object): Bar is abstract` # For redef: `redef fun foo(e) is cached` - # TODO change the implementation to correspond to the comment. redef fun html_declaration do var tpl = new Template tpl.add "" tpl.add html_modifiers.join(" ") tpl.add " " - tpl.add html_link - tpl.add html_signature + if is_intro then + tpl.add html_link + tpl.add html_signature + else + tpl.add mproperty.intro.html_link + tpl.add html_short_signature + end tpl.add "" return tpl end @@ -378,6 +417,14 @@ redef class MPropDef # Returns the MPropDef signature with static types. fun html_signature: Template is abstract + + redef fun css_classes do + var set = new HashSet[String] + if is_intro then set.add "intro" + for m in mproperty.intro.modifiers do set.add m.to_cmangle + for m in modifiers do set.add m.to_cmangle + return set.to_a + end end redef class MAttributeDef @@ -404,22 +451,50 @@ redef class MMethodDef # FIXME annotation should be handled in their own way redef fun html_modifiers do + if mproperty.is_init then + var res = new Array[String] + if mproperty.visibility != public_visibility then + res.add mproperty.visibility.to_s + end + return res + end var res = super if is_abstract then res.add "abstract" else if is_intern then res.add "intern" end + res.add "fun" + return res + end + + redef fun html_declaration do if mproperty.is_init then - res.add "init" - else - res.add "fun" + var tpl = new Template + tpl.add "" + tpl.add html_modifiers.join(" ") + tpl.add " " + tpl.add html_link + tpl.add html_signature + tpl.add "" + return tpl end - return res + return super + end + + redef fun html_short_signature do + if mproperty.is_root_init and new_msignature != null then + return new_msignature.html_short_signature + end + return msignature.html_short_signature end - redef fun html_short_signature do return msignature.html_short_signature - redef fun html_signature do return msignature.html_signature + redef fun html_signature do + if mproperty.is_root_init and new_msignature != null then + return new_msignature.html_signature + end + return msignature.html_signature + end end redef class MVirtualTypeProp @@ -611,7 +686,7 @@ redef class MConcern private fun html_concern_item: ListItem do var lnk = html_link var tpl = new Template - tpl.add new Link.with_title("#{nitdoc_id}", lnk.text, lnk.title) + tpl.add new Link.with_title("#{nitdoc_id}.concern", lnk.text, lnk.title) var comment = html_short_comment if comment != null then tpl.add ": "