From 170f5bc6752555e1c09d23c1975dd8b3194fde32 Mon Sep 17 00:00:00 2001 From: Alexandre Terrasa Date: Mon, 23 Feb 2015 20:45:42 +0100 Subject: [PATCH] src/doc: clean signature HTML output with `html_signature` and `html_short_signature` Signed-off-by: Alexandre Terrasa --- src/doc/doc_phases/doc_html.nit | 6 +- src/doc/html_templates/html_model.nit | 201 +++++++++++++++++++++------------ 2 files changed, 131 insertions(+), 76 deletions(-) diff --git a/src/doc/doc_phases/doc_html.nit b/src/doc/doc_phases/doc_html.nit index bd54c91..ef74992 100644 --- a/src/doc/doc_phases/doc_html.nit +++ b/src/doc/doc_phases/doc_html.nit @@ -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 @@ -533,7 +533,7 @@ redef class DocRoot section.title = mentity.mproject.html_name 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.title = "{mentity.html_name}{mentity.intro.html_signature.write_to_string}" section.subtitle = mentity.html_namespace section.summary_title = mentity.html_name end @@ -701,7 +701,7 @@ redef class DefinitionArticle title.add "" if mpropdef.is_intro then title.add mprop.html_link - title.add mprop.intro.tpl_signature + title.add mprop.intro.html_signature else var cls_url = mprop.intro.mclassdef.mclass.nitdoc_url var def_url = "{cls_url}#{mprop.nitdoc_id}" diff --git a/src/doc/html_templates/html_model.nit b/src/doc/html_templates/html_model.nit index bcfdcf5..a37dd2b 100644 --- a/src/doc/html_templates/html_model.nit +++ b/src/doc/html_templates/html_model.nit @@ -310,6 +310,12 @@ redef class MClass 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 @@ -320,21 +326,6 @@ redef class MClass 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 @@ -371,7 +362,7 @@ redef class MClassDef tpl.add html_modifiers.join(" ") tpl.add " " tpl.add html_link - tpl.add tpl_signature + tpl.add html_signature tpl.add "" return tpl end @@ -386,6 +377,37 @@ redef class MClassDef 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}" @@ -409,21 +431,6 @@ redef class MClassDef return title 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 @@ -468,7 +475,11 @@ redef class MProperty return tpl end - fun tpl_signature: Template do return new Template + # 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_title do return intro.tpl_title @@ -509,7 +520,7 @@ redef class MPropDef tpl.add html_modifiers.join(" ") tpl.add " " tpl.add html_link - tpl.add tpl_signature + tpl.add html_signature tpl.add "" return tpl end @@ -523,6 +534,12 @@ redef class MPropDef 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}" @@ -564,8 +581,6 @@ 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) @@ -611,27 +626,13 @@ redef class MAttributeDef return res end - redef fun tpl_signature do + 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 - 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 - end - if not params.is_empty then - tpl.add "(" - tpl.add params.join(", ") - tpl.add ")" + tpl.add static_mtype.html_signature end return tpl end @@ -655,12 +656,12 @@ redef class MMethodDef return res end - 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 html_link do return mvirtualtype.html_link - redef fun tpl_signature do return html_link end redef class MVirtualTypeDef @@ -671,41 +672,69 @@ redef class MVirtualTypeDef return res end - redef fun tpl_signature do + 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 html_link do return mclass.html_link - redef fun tpl_signature do return 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.tpl_signature + tpl.add mtype.html_short_signature + return tpl + end + + redef fun html_signature do + var tpl = new Template + tpl.add "nullable " + 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 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 "]" @@ -717,38 +746,64 @@ redef class MParameterType 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 html_link + + redef fun html_short_signature do return html_link + redef fun html_signature do return html_link end redef class MVirtualType redef fun html_link do return mproperty.intro.html_link - redef fun tpl_signature do return 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].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].tpl_signature + 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 @@ -796,7 +851,7 @@ 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 @@ -812,7 +867,7 @@ 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 @@ -820,7 +875,7 @@ redef class MInnerClassDef redef fun html_link_to_anchor do return inner.html_link_to_anchor redef fun html_link do return inner.html_link - redef fun tpl_signature do return inner.tpl_signature + redef fun html_signature do return inner.html_signature redef fun tpl_definition do var tpl = new TplClassDefinition -- 1.7.9.5