From: Jean Privat Date: Wed, 22 Apr 2015 04:18:23 +0000 (+0700) Subject: Merge: Nitdoc: more cleaning and uniformize method names X-Git-Tag: v0.7.4~13 X-Git-Url: http://nitlanguage.org?hp=0dbaa61acf1489821fdedc262d5447616a23e86e Merge: Nitdoc: more cleaning and uniformize method names Démos: * [stdlib](http://gresil.org/jenkins/job/CI-nitdoc/ws/doc/stdlib/index.html) * [nitc](http://gresil.org/jenkins/job/CI-nitdoc/ws/doc/nitc/index.html) Pull-Request: #1283 Reviewed-by: Jean Privat Reviewed-by: Romain Chanoir --- diff --git a/src/doc/doc_phases/doc_html.nit b/src/doc/doc_phases/doc_html.nit index 83b02f9..ef74992 100644 --- a/src/doc/doc_phases/doc_html.nit +++ b/src/doc/doc_phases/doc_html.nit @@ -244,7 +244,7 @@ redef class OverviewPage var ssection = new TplSection.with_title("projects", "Projects") for mproject in mprojects do var sarticle = mproject.tpl_article - sarticle.subtitle = mproject.tpl_declaration + sarticle.subtitle = mproject.html_declaration sarticle.content = mproject.tpl_definition var mdoc = mproject.mdoc_or_fallback if mdoc != null then @@ -278,18 +278,18 @@ redef class SearchPage tpl.title = "Index" # modules list for mmodule in modules_list(v, doc) do - tpl.modules.add mmodule.tpl_link + tpl.modules.add mmodule.html_link end # classes list for mclass in classes_list(v, doc) do - tpl.classes.add mclass.tpl_link + tpl.classes.add mclass.html_link end # properties list for mproperty in mprops_list(v, doc) do var m = new Template - m.add mproperty.intro.tpl_link + m.add mproperty.intro.html_link m.add " (" - m.add mproperty.intro.mclassdef.mclass.tpl_link + m.add mproperty.intro.mclassdef.mclass.html_link m.add ")" tpl.props.add m end @@ -369,7 +369,7 @@ redef class MGroupPage end var lnk = new Template lnk.add new TplLabel.with_classes(classes) - lnk.add def.tpl_link + lnk.add def.html_link return new TplListItem.with_content(lnk) end end @@ -410,7 +410,7 @@ redef class MModulePage end var lnk = new Template lnk.add new TplLabel.with_classes(classes) - lnk.add def.tpl_link + lnk.add def.html_link return new TplListItem.with_content(lnk) end end @@ -467,7 +467,7 @@ redef class MClassPage end var lnk = new Template lnk.add new TplLabel.with_classes(classes) - lnk.add mprop.tpl_anchor + lnk.add mprop.html_link_to_anchor return new TplListItem.with_content(lnk) end @@ -496,7 +496,7 @@ end redef class MPropertyPage redef fun init_title(v, doc) do - title = "{mentity.html_name}{mentity.tpl_signature.write_to_string}" + title = "{mentity.html_name}{mentity.html_short_signature.write_to_string}" end redef fun init_topmenu(v, doc) do @@ -527,14 +527,14 @@ redef class DocRoot var section = new TplSection("top") var mentity = page.mentity section.title = mentity.html_name - section.subtitle = mentity.tpl_declaration + section.subtitle = mentity.html_declaration # FIXME ugly hack to avoid diff if mentity isa MGroup and mentity.is_root then section.title = mentity.mproject.html_name - section.subtitle = mentity.mproject.tpl_declaration + section.subtitle = mentity.mproject.html_declaration else if mentity isa MProperty then - section.title = "{mentity.html_name}{mentity.intro.tpl_signature.write_to_string}" - section.subtitle = mentity.tpl_namespace + section.title = "{mentity.html_name}{mentity.intro.html_signature.write_to_string}" + section.subtitle = mentity.html_namespace section.summary_title = mentity.html_name end render(v, doc, page, section) @@ -575,14 +575,14 @@ redef class ConcernSection title.add "from " section.summary_title = "from {mmodule.html_name}" end - title.add mmodule.tpl_namespace + title.add mmodule.html_namespace section.title = title end private fun render_concern_other(page: MEntityPage, section: TplSection, mmodule: MModule) do var title = new Template title.add "in " - title.add mmodule.tpl_namespace + title.add mmodule.html_namespace section.title = title section.summary_title = "in {mmodule.html_name}" end @@ -605,11 +605,11 @@ redef class IntroArticle else if mentity isa MPropDef then article.source_link = v.tpl_showsource(mentity.location) end - # article.subtitle = mentity.tpl_declaration + # article.subtitle = mentity.html_declaration # FIXME diff hack if mentity isa MProperty then # intro title - var ns = mentity.intro.mclassdef.mmodule.tpl_namespace + var ns = mentity.intro.mclassdef.mmodule.html_namespace var section = new TplSection("intro") var title = new Template title.add "Introduction in " @@ -644,7 +644,7 @@ redef class DefinitionArticle # FIXME hideous hacks... if mentity isa MModule then article = mentity.tpl_article - article.subtitle = mentity.tpl_declaration + article.subtitle = mentity.html_declaration article.content = mentity.tpl_definition else if mentity isa MClass then article = make_mclass_article(v, page) @@ -655,7 +655,7 @@ redef class DefinitionArticle article = make_mpropdef_article(v, doc, page) else article = mentity.tpl_article - article.subtitle = mentity.tpl_declaration + article.subtitle = mentity.html_declaration if mentity isa MPropDef then article.source_link = v.tpl_showsource(mentity.location) end @@ -673,7 +673,7 @@ redef class DefinitionArticle private fun make_mclass_article(v: RenderHTMLPhase, page: MEntityPage): TplArticle do var article = mentity.tpl_article - article.subtitle = mentity.tpl_namespace + article.subtitle = mentity.html_namespace article.content = null return article end @@ -686,7 +686,7 @@ redef class DefinitionArticle end var title = new Template title.add "in " - title.add mclassdef.mmodule.tpl_namespace + title.add mclassdef.mmodule.html_namespace article.subtitle = title return article end @@ -700,8 +700,8 @@ redef class DefinitionArticle title.add mprop.tpl_icon title.add "" if mpropdef.is_intro then - title.add mprop.tpl_link - title.add mprop.intro.tpl_signature + title.add mprop.html_link + title.add mprop.intro.html_signature else var cls_url = mprop.intro.mclassdef.mclass.nitdoc_url var def_url = "{cls_url}#{mprop.nitdoc_id}" @@ -713,7 +713,7 @@ redef class DefinitionArticle article.title = title article.title_classes.add "signature" article.summary_title = "{mprop.html_name}" - article.subtitle = mpropdef.tpl_namespace + article.subtitle = mpropdef.html_namespace if mpropdef.mdoc_or_fallback != null then article.content = mpropdef.mdoc_or_fallback.tpl_comment end diff --git a/src/doc/html_templates/html_model.nit b/src/doc/html_templates/html_model.nit index 2908fad..a37dd2b 100644 --- a/src/doc/html_templates/html_model.nit +++ b/src/doc/html_templates/html_model.nit @@ -18,6 +18,7 @@ module html_model import doc_base import doc_down import html_components +import html::bootstrap import ordered_tree redef class Location @@ -56,9 +57,11 @@ redef class MEntity # * MPropdef: `foo(e)` var html_name: String is lazy do return name.html_escape - # A template link to the mentity `nitdoc_id` - fun tpl_anchor: TplLink do - var tpl = new TplLink("#{nitdoc_id}", html_name) + # Returns a Link to the mentity `html_url`. + # + # Example: `html_short_name + var html_link: Link is lazy do + var tpl = new Link(nitdoc_url, html_name) var mdoc = mdoc_or_fallback if mdoc != null then tpl.title = mdoc.short_comment @@ -66,9 +69,11 @@ redef class MEntity return tpl end - # A template link to the mentity `nitdoc_url` - fun tpl_link: TplLink do - var tpl = new TplLink(nitdoc_url, html_name) + # Returns a Link to the mentity `nitdoc_id`. + # + # Example: `html_short_name + fun html_link_to_anchor: Link do + var tpl = new Link("#{nitdoc_id}", html_name) var mdoc = mdoc_or_fallback if mdoc != null then tpl.title = mdoc.short_comment @@ -76,6 +81,39 @@ redef class MEntity return tpl end + # Returns the list of keyword used in `self` declaration. + fun html_modifiers: Array[String] is abstract + + # Returns the complete MEntity declaration decorated with HTML. + # + # * MProject: `project foo` + # * MGroup: `group foo` + # * MModule: `module foo` + # * MClass: `private abstract class Foo[E: Object]` + # * MClassDef: `redef class Foo[E]` + # * MProperty: `private fun foo(e: Object): Int` + # * MPropdef: `redef fun foo(e)` + fun html_declaration: Template do + var tpl = new Template + tpl.add "" + tpl.add html_modifiers.join(" ") + tpl.add " " + tpl.add html_link + tpl.add "" + return tpl + end + + # Returns `self` namespace decorated with HTML links. + # + # * MProject: `mproject` + # * MGroup: `mproject(::group)` + # * MModule: `mgroup::mmodule` + # * MClass: `mproject::mclass` + # * MClassDef: `mmodule::mclassdef` + # * MProperty: `mclass::mprop` + # * MPropdef: `mclassdef:mpropdef` + fun html_namespace: Template is abstract + # A template article that briefly describe the entity fun tpl_short_article: TplArticle do var tpl = tpl_article @@ -90,17 +128,11 @@ redef class MEntity fun tpl_article: TplArticle do var tpl = new TplArticle.with_title(nitdoc_id, tpl_title) tpl.title_classes.add "signature" - tpl.subtitle = tpl_namespace + tpl.subtitle = html_namespace tpl.summary_title = html_name return tpl end - # A template signature that contains modifiers and parameters - fun tpl_declaration: Template is abstract - - # A template namespace - fun tpl_namespace: Template is abstract - # A template definition of the mentity # include name, sysnopsys, comment and namespace fun tpl_definition: TplDefinition is abstract @@ -109,7 +141,7 @@ redef class MEntity fun tpl_list_item: TplListItem do var lnk = new Template lnk.add new TplLabel.with_classes(tpl_css_classes) - lnk.add tpl_link + lnk.add html_link var mdoc = mdoc_or_fallback if mdoc != null then lnk.add ": " @@ -124,7 +156,7 @@ redef class MEntity fun tpl_title: Template do var title = new Template title.add tpl_icon - title.add tpl_namespace + title.add html_namespace return title end @@ -140,7 +172,7 @@ redef class MConcern # Return a li element for `self` that can be displayed in a concern list private fun tpl_concern_item: TplListItem do var lnk = new Template - lnk.add tpl_anchor + lnk.add html_link_to_anchor var mdoc = mdoc_or_fallback if mdoc != null then lnk.add ": " @@ -153,16 +185,8 @@ end redef class MProject redef var nitdoc_id = name.to_cmangle is lazy redef fun nitdoc_url do return root.nitdoc_url - - redef fun tpl_declaration do - var tpl = new Template - tpl.add "project " - tpl.add tpl_link - tpl.add "" - return tpl - end - - redef fun tpl_namespace do return tpl_link + redef var html_modifiers = ["project"] + redef fun html_namespace do return html_link redef fun tpl_definition do var tpl = new TplDefinition @@ -185,25 +209,22 @@ redef class MGroup end redef fun nitdoc_url do return "group_{nitdoc_id}.html" + redef var html_modifiers = ["group"] - redef fun tpl_namespace do + # Depends if `self` is root or not. + # + # * If root `mproject`. + # * Else `mproject::self`. + redef fun html_namespace do var tpl = new Template - tpl.add mproject.tpl_namespace + tpl.add mproject.html_namespace if mproject.root != self then tpl.add "::" - tpl.add tpl_link + tpl.add html_link end return tpl end - redef fun tpl_declaration do - var tpl = new Template - tpl.add "group " - tpl.add tpl_link - tpl.add "" - return tpl - end - redef fun tpl_definition do var tpl = new TplDefinition var mdoc = mdoc_or_fallback @@ -227,22 +248,19 @@ redef class MModule end redef fun nitdoc_url do return "module_{nitdoc_id}.html" + redef var html_modifiers = ["module"] - redef fun tpl_declaration do - var tpl = new Template - tpl.add "module " - tpl.add tpl_namespace - tpl.add "" - return tpl - end - - redef fun tpl_namespace do + # Depends if `self` belongs to a MGroup. + # + # * If mgroup `mgroup::self`. + # * Else `self`. + redef fun html_namespace do var tpl = new Template if mgroup != null then - tpl.add mgroup.tpl_namespace + tpl.add mgroup.html_namespace tpl.add "::" end - tpl.add tpl_link + tpl.add html_link return tpl end @@ -279,67 +297,125 @@ redef class MClass return tpl.write_to_string end - redef fun tpl_declaration do return intro.tpl_declaration - redef fun tpl_definition do return intro.tpl_definition + redef fun html_modifiers do return intro.html_modifiers + redef fun html_declaration do return intro.html_declaration - redef fun tpl_namespace do + # Returns `mproject::self`. + redef fun html_namespace do var tpl = new Template - tpl.add intro_mmodule.mgroup.mproject.tpl_namespace + tpl.add intro_mmodule.mgroup.mproject.html_namespace tpl.add "::" - tpl.add tpl_link + tpl.add html_link tpl.add "" return tpl end + # Returns `intro.html_short_signature`. + fun html_short_signature: Template do return intro.html_short_signature + + # Returns `intro.html_signature`. + fun html_signature: Template do return intro.html_signature + + redef fun tpl_definition do return intro.tpl_definition + redef fun tpl_title do var title = new Template title.add tpl_icon - title.add tpl_link + title.add html_link return title end redef fun tpl_icon do return intro.tpl_icon - - fun tpl_signature: Template do - var tpl = new Template - if arity > 0 then - tpl.add "[" - var parameter_names = new Array[String] - for p in mparameters do - parameter_names.add(p.html_name) - end - tpl.add parameter_names.join(", ") - tpl.add "]" - end - return tpl - end - redef fun tpl_css_classes do return intro.tpl_css_classes end redef class MClassDef redef var nitdoc_id = "{mmodule.nitdoc_id}__{name.to_cmangle}" is lazy redef fun nitdoc_url do return "{mclass.nitdoc_url}#{nitdoc_id}" - redef fun mdoc_or_fallback do return mdoc or else mclass.mdoc_or_fallback - redef fun tpl_namespace do + # Depends if `self` is an intro or not. + # + # * If intro contains the visibility and kind. + # * If redef contains the `redef` keyword and kind. + redef fun html_modifiers do + var res = new Array[String] + if not is_intro then + res.add "redef" + else + if mclass.visibility != public_visibility then + res.add mclass.visibility.to_s + end + end + res.add mclass.kind.to_s + return res + end + + # Depends if `self` is an intro or not. + # + # 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 mmodule.tpl_namespace + tpl.add "" + tpl.add html_modifiers.join(" ") + tpl.add " " + tpl.add html_link + tpl.add html_signature + tpl.add "" + return tpl + end + + # Returns `mmodule::self` + redef fun html_namespace do + var tpl = new Template + tpl.add mmodule.html_namespace tpl.add "::" - tpl.add mclass.tpl_link + tpl.add mclass.html_link tpl.add "" return tpl end + # Returns the MClassDef generic signature without static bounds. + fun html_short_signature: Template do + var tpl = new Template + var mparameters = mclass.mparameters + if not mparameters.is_empty then + tpl.add "[" + for i in [0..mparameters.length[ do + tpl.add mparameters[i].html_name + if i < mparameters.length - 1 then tpl.add ", " + end + tpl.add "]" + end + return tpl + end + + # Returns the MClassDef generic signature with static bounds. + fun html_signature: Template do + var tpl = new Template + var mparameters = mclass.mparameters + if not mparameters.is_empty then + tpl.add "[" + for i in [0..mparameters.length[ do + tpl.add "{mparameters[i].html_name}: " + tpl.add bound_mtype.arguments[i].html_signature + if i < mparameters.length - 1 then tpl.add ", " + end + tpl.add "]" + end + return tpl + end + redef fun tpl_article do var tpl = new TplArticle(nitdoc_id) tpl.summary_title = "in {mmodule.html_name}" - tpl.title = tpl_declaration + tpl.title = html_declaration tpl.title_classes.add "signature" var title = new Template title.add "in " - title.add mmodule.tpl_namespace + title.add mmodule.html_namespace tpl.subtitle = title var mdoc = mdoc_or_fallback if mdoc != null then @@ -351,33 +427,10 @@ redef class MClassDef redef fun tpl_title do var title = new Template title.add tpl_icon - title.add tpl_link + title.add html_link return title end - redef fun tpl_declaration do - var tpl = new Template - tpl.add tpl_modifiers - tpl.add tpl_link - tpl.add tpl_signature - return tpl - end - - fun tpl_signature: Template do - var tpl = new Template - var mparameters = mclass.mparameters - if not mparameters.is_empty then - tpl.add "[" - for i in [0..mparameters.length[ do - tpl.add "{mparameters[i].html_name}: " - tpl.add bound_mtype.arguments[i].tpl_signature - if i < mparameters.length - 1 then tpl.add ", " - end - tpl.add "]" - end - return tpl - end - redef fun tpl_definition do var tpl = new TplClassDefinition var mdoc = mdoc_or_fallback @@ -408,21 +461,25 @@ end redef class MProperty redef var nitdoc_id = "{intro_mclassdef.mclass.nitdoc_id}__{name.to_cmangle}" is lazy redef fun nitdoc_url do return "property_{nitdoc_id}.html" - redef fun mdoc_or_fallback do return intro.mdoc + redef fun html_modifiers do return intro.html_modifiers + redef fun html_declaration do return intro.html_declaration - redef fun tpl_namespace do + # Returns `mclass::self`. + redef fun html_namespace do var tpl = new Template - tpl.add intro_mclassdef.mclass.tpl_namespace + tpl.add intro_mclassdef.mclass.html_namespace tpl.add "::" - tpl.add intro.tpl_link + tpl.add intro.html_link tpl.add "" return tpl end - redef fun tpl_declaration do return intro.tpl_declaration + # Returns `intro.html_short_signature`. + fun html_short_signature: Template do return intro.html_short_signature - fun tpl_signature: Template do return new Template + # Returns `intro.html_signature`. + fun html_signature: Template do return intro.html_signature redef fun tpl_title do return intro.tpl_title @@ -434,25 +491,63 @@ end redef class MPropDef redef var nitdoc_id = "{mclassdef.nitdoc_id}__{name.to_cmangle}" is lazy redef fun nitdoc_url do return "{mproperty.nitdoc_url}#{nitdoc_id}" - redef fun mdoc_or_fallback do return mdoc or else mproperty.mdoc_or_fallback - redef fun tpl_namespace do + # Depends if `self` is an intro or not. + # + # * If intro contains the visibility and kind. + # * If redef contains the `redef` keyword and kind. + redef fun html_modifiers do + var res = new Array[String] + if not is_intro then + res.add "redef" + else + if mproperty.visibility != public_visibility then + res.add mproperty.visibility.to_s + end + end + return res + end + + # Depends if `self` is an intro or not. + # + # 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 mclassdef.tpl_namespace + tpl.add "" + tpl.add html_modifiers.join(" ") + tpl.add " " + tpl.add html_link + tpl.add html_signature + tpl.add "" + return tpl + end + + # Returns `mclassdef::self` + redef fun html_namespace do + var tpl = new Template + tpl.add mclassdef.html_namespace tpl.add "::" - tpl.add tpl_link + tpl.add html_link return tpl end + # Returns the MPropdDef signature without static types. + fun html_short_signature: Template is abstract + + # Returns the MPropDef signature with static types. + fun html_signature: Template is abstract + redef fun tpl_article do var tpl = new TplArticle(nitdoc_id) tpl.summary_title = "in {mclassdef.html_name}" var title = new Template title.add "in " - title.add mclassdef.tpl_link + title.add mclassdef.html_link tpl.title = title - tpl.subtitle = tpl_declaration + tpl.subtitle = html_declaration var mdoc = mdoc_or_fallback if mdoc != null then tpl.content = mdoc.tpl_comment @@ -469,14 +564,6 @@ redef class MPropDef return tpl end - redef fun tpl_declaration do - var tpl = new Template - tpl.add tpl_modifiers - tpl.add tpl_link - tpl.add tpl_signature - return tpl - end - redef fun tpl_css_classes do var set = new HashSet[String] if is_intro then set.add "intro" @@ -494,13 +581,13 @@ redef class MPropDef return tpl end - fun tpl_signature: Template do return new Template - redef fun tpl_list_item do var lnk = new Template lnk.add new TplLabel.with_classes(tpl_css_classes.to_a) - var anchor = tpl_link - anchor.href = "{mclassdef.mclass.nitdoc_url}#{mproperty.nitdoc_id}" + var atext = html_link.text + var ahref = "{mclassdef.mclass.nitdoc_url}#{mproperty.nitdoc_id}" + var atitle = html_link.title + var anchor = new Link.with_title(ahref, atext, atitle) lnk.add anchor var mdoc = mdoc_or_fallback if mdoc != null then @@ -513,10 +600,12 @@ redef class MPropDef fun tpl_inheritance_item: TplListItem do var lnk = new Template lnk.add new TplLabel.with_classes(tpl_css_classes.to_a) - lnk.add mclassdef.mmodule.tpl_namespace + lnk.add mclassdef.mmodule.html_namespace lnk.add "::" - var anchor = mclassdef.tpl_link - anchor.href = "{mclassdef.mclass.nitdoc_url}#{mproperty.nitdoc_id}" + var atext = mclassdef.html_link.text + var ahref = "{mclassdef.mclass.nitdoc_url}#{mproperty.nitdoc_id}" + var atitle = mclassdef.html_link.title + var anchor = new Link.with_title(ahref, atext, atitle) lnk.add anchor var mdoc = mdoc_or_fallback if mdoc != null then @@ -530,78 +619,122 @@ redef class MPropDef end redef class MAttributeDef - redef fun tpl_signature do + + redef fun html_modifiers do + var res = super + res.add "var" + return res + end + + redef fun html_short_signature do return new Template + + redef fun html_signature do var tpl = new Template if static_mtype != null then tpl.add ": " - tpl.add static_mtype.tpl_signature + tpl.add static_mtype.html_signature end return tpl end end -redef class MMethod - redef fun tpl_signature do - var tpl = new Template - var params = new Array[String] - for param in intro.msignature.mparameters do - params.add param.name.html_escape +redef class MMethodDef + + # FIXME annotation should be handled in their own way + redef fun html_modifiers do + var res = super + if is_abstract then + res.add "abstract" + else if is_intern then + res.add "intern" end - if not params.is_empty then - tpl.add "(" - tpl.add params.join(", ") - tpl.add ")" + if mproperty.is_init then + res.add "init" + else + res.add "fun" end - return tpl + return res end -end -redef class MMethodDef - redef fun tpl_signature do return msignature.tpl_signature + redef fun html_short_signature do return msignature.html_short_signature + redef fun html_signature do return msignature.html_signature end redef class MVirtualTypeProp - redef fun tpl_link do return mvirtualtype.tpl_link - redef fun tpl_signature do return tpl_link + redef fun html_link do return mvirtualtype.html_link end redef class MVirtualTypeDef - redef fun tpl_signature do + + redef fun html_modifiers do + var res = super + res.add "type" + return res + end + + redef fun html_short_signature do return new Template + + redef fun html_signature do var tpl = new Template if bound == null then return tpl tpl.add ": " - tpl.add bound.tpl_signature + tpl.add bound.html_signature return tpl end end redef class MType - fun tpl_signature: Template is abstract + # Returns the signature of this type whithout bounds. + fun html_short_signature: Template is abstract + + # Returns the signature of this type. + fun html_signature: Template is abstract end redef class MClassType - redef fun tpl_link do return mclass.tpl_link - redef fun tpl_signature do return tpl_link + redef fun html_link do return mclass.html_link + redef fun html_short_signature do return html_link + redef fun html_signature do return html_link end redef class MNullableType - redef fun tpl_signature do + + redef fun html_short_signature do + var tpl = new Template + tpl.add "nullable " + tpl.add mtype.html_short_signature + return tpl + end + + redef fun html_signature do var tpl = new Template tpl.add "nullable " - tpl.add mtype.tpl_signature + tpl.add mtype.html_signature return tpl end end redef class MGenericType - redef fun tpl_signature do + redef fun html_short_signature do + var lnk = html_link var tpl = new Template - var lnk = tpl_link - lnk.text = mclass.name.html_escape - tpl.add lnk + tpl.add new Link.with_title(lnk.href, mclass.name.html_escape, lnk.title) tpl.add "[" for i in [0..arguments.length[ do - tpl.add arguments[i].tpl_signature + tpl.add arguments[i].html_short_signature + if i < arguments.length - 1 then tpl.add ", " + end + tpl.add "]" + return tpl + end + + redef fun html_signature do + var lnk = html_link + var tpl = new Template + tpl.add new Link.with_title(lnk.href, mclass.name.html_escape, lnk.title) + tpl.add "[" + for i in [0..arguments.length[ do + tpl.add arguments[i].html_signature if i < arguments.length - 1 then tpl.add ", " end tpl.add "]" @@ -610,41 +743,67 @@ redef class MGenericType end redef class MParameterType - redef fun tpl_link do - return new TplLink.with_title("{mclass.nitdoc_url}#FT_{name.to_cmangle}", name, "formal type") + redef fun html_link do + return new Link.with_title("{mclass.nitdoc_url}#FT_{name.to_cmangle}", name, "formal type") end - redef fun tpl_signature do return tpl_link + + redef fun html_short_signature do return html_link + redef fun html_signature do return html_link end redef class MVirtualType - redef fun tpl_link do return mproperty.intro.tpl_link - redef fun tpl_signature do return tpl_link + redef fun html_link do return mproperty.intro.html_link + redef fun html_signature do return html_link end redef class MSignature - redef fun tpl_signature do + + redef fun html_short_signature do var tpl = new Template if not mparameters.is_empty then tpl.add "(" for i in [0..mparameters.length[ do - tpl.add mparameters[i].tpl_signature + tpl.add mparameters[i].html_short_signature + if i < mparameters.length - 1 then tpl.add ", " + end + tpl.add ")" + end + return tpl + end + + redef fun html_signature do + var tpl = new Template + if not mparameters.is_empty then + tpl.add "(" + for i in [0..mparameters.length[ do + tpl.add mparameters[i].html_signature if i < mparameters.length - 1 then tpl.add ", " end tpl.add ")" end if return_mtype != null then tpl.add ": " - tpl.add return_mtype.tpl_signature + tpl.add return_mtype.html_signature end return tpl end end redef class MParameter - fun tpl_signature: Template do + + # Returns `self` name and ellipsys if any. + fun html_short_signature: Template do + var tpl = new Template + tpl.add name + if is_vararg then tpl.add "..." + return tpl + end + + # Returns `self` name with it's static type and ellipsys if any. + fun html_signature: Template do var tpl = new Template tpl.add "{name}: " - tpl.add mtype.tpl_signature + tpl.add mtype.html_signature if is_vararg then tpl.add "..." return tpl end @@ -692,12 +851,12 @@ end # Additions to `model_ext`. redef class MRawType - redef fun tpl_signature do + redef fun html_signature do var tpl = new Template for part in parts do if part.target != null then - tpl.add part.target.as(not null).tpl_link + tpl.add part.target.as(not null).html_link else tpl.add part.text.html_escape end @@ -708,15 +867,15 @@ end redef class MInnerClass redef fun nitdoc_url do return inner.nitdoc_url - redef fun tpl_signature do return inner.tpl_signature + redef fun html_signature do return inner.html_signature end redef class MInnerClassDef redef fun nitdoc_url do return inner.nitdoc_url - redef fun tpl_anchor do return inner.tpl_anchor - redef fun tpl_link do return inner.tpl_link - redef fun tpl_signature do return inner.tpl_signature + redef fun html_link_to_anchor do return inner.html_link_to_anchor + redef fun html_link do return inner.html_link + redef fun html_signature do return inner.html_signature redef fun tpl_definition do var tpl = new TplClassDefinition