From: Alexandre Terrasa Date: Sat, 20 Jul 2013 15:41:35 +0000 (-0400) Subject: ni_nitdoc: reorganize classes for better readability X-Git-Tag: v0.6.1~73^2~5^2~48 X-Git-Url: http://nitlanguage.org ni_nitdoc: reorganize classes for better readability Signed-off-by: Alexandre Terrasa --- diff --git a/src/ni_nitdoc.nit b/src/ni_nitdoc.nit index 35fe406..d49d0df 100644 --- a/src/ni_nitdoc.nit +++ b/src/ni_nitdoc.nit @@ -1007,25 +1007,9 @@ class NitdocClass end end -redef class AModule - private fun comment: String do - var ret = new Buffer - if n_moduledecl is null or n_moduledecl.n_doc is null then ret - if n_moduledecl.n_doc is null then return "" - for t in n_moduledecl.n_doc.n_comment do - ret.append(t.text.substring_from(1)) - end - return ret.to_s.html_escape - end - - private fun short_comment: String do - var ret = new Buffer - if n_moduledecl != null and n_moduledecl.n_doc != null then - ret.append(n_moduledecl.n_doc.n_comment.first.text.substring_from(2).replace("\n", "")) - end - return ret.to_s.html_escape - end -end +# +# Model redefs +# redef class MModule super Comparable @@ -1091,81 +1075,6 @@ redef class MModule return res.to_s end end -redef class MPropDef - super Comparable - redef type OTHER: MPropDef - redef fun <(other: OTHER): Bool do return self.mproperty.name < other.mproperty.name - - # Return a link (html a tag) to the nitdoc class page - fun link(mbuilder: ModelBuilder): String do - if mbuilder.mpropdef2npropdef.has_key(self) then - var nprop = mbuilder.mpropdef2npropdef[self] - return "{mproperty.name}" - else - return "{mproperty.name}" - end - end - - # Return a list item for the mpropdef - fun html_list_item(mbuilder: ModelBuilder): String do - var res = new Buffer - if is_intro then - res.append("
  • ") - res.append("I {link(mbuilder)} ({mclassdef.mclass.name})") - res.append("
  • ") - else - res.append("
  • ") - res.append("R {link(mbuilder)} ({mclassdef.mclass.name})") - res.append("
  • ") - end - return res.to_s - end - - # Return a list item for the mpropdef - fun html_sidebar_item(page: NitdocClass): String do - var res = new Buffer - if is_intro and mclassdef.mclass == page.mclass then - res.append("
  • ") - res.append("I") - else if is_intro and mclassdef.mclass != page.mclass then - res.append("
  • ") - res.append("H") - else - res.append("
  • ") - res.append("R") - end - res.append(link(page.mbuilder)) - res.append("
  • ") - return res.to_s - end -end - -redef class MProperty - super Comparable - redef type OTHER: MProperty - redef fun <(other: OTHER): Bool do return self.name < other.name - - var is_redef: Bool - var apropdef: nullable APropdef - - redef init(intro_mclassdef: MClassDef, name: String, visibility: MVisibility) - do - super - is_redef = false - end - - fun local_class: MClass do - var classdef = self.intro_mclassdef - return classdef.mclass - end - - fun anchor: String do - return "PROP_{c_name}" - end - - # Escape name for html output - redef fun name do return super.html_escape -end redef class MClass super Comparable @@ -1291,18 +1200,127 @@ redef class MClass redef fun name do return super.html_escape end -redef class AStdClassdef +redef class MProperty + super Comparable + redef type OTHER: MProperty + redef fun <(other: OTHER): Bool do return self.name < other.name + + var is_redef: Bool + var apropdef: nullable APropdef + + redef init(intro_mclassdef: MClassDef, name: String, visibility: MVisibility) + do + super + is_redef = false + end + + fun local_class: MClass do + var classdef = self.intro_mclassdef + return classdef.mclass + end + + fun anchor: String do + return "PROP_{c_name}" + end + + # Escape name for html output + redef fun name do return super.html_escape +end + +redef class MType + fun link(mbuilder: ModelBuilder): String is abstract +end + +redef class MClassType + redef fun link(mbuilder) do return mclass.link(mbuilder) +end + +redef class MNullableType + redef fun link(mbuilder) do return "nullable {mtype.link(mbuilder)}" +end + +redef class MClassDef + private fun namespace(mclass: MClass): String do + + if mmodule.public_owner is null then + return "{mmodule.full_name}::{mclass.name}" + else if mclass is self.mclass then + return "{mmodule.public_owner.name}::{mclass.name}" + else + return "{mmodule.public_owner.name}::{mclass.name}" + end + end +end + +redef class MPropDef + super Comparable + redef type OTHER: MPropDef + redef fun <(other: OTHER): Bool do return self.mproperty.name < other.mproperty.name + + # Return a link (html a tag) to the nitdoc class page + fun link(mbuilder: ModelBuilder): String do + if mbuilder.mpropdef2npropdef.has_key(self) then + var nprop = mbuilder.mpropdef2npropdef[self] + return "{mproperty.name}" + else + return "{mproperty.name}" + end + end + + # Return a list item for the mpropdef + fun html_list_item(mbuilder: ModelBuilder): String do + var res = new Buffer + if is_intro then + res.append("
  • ") + res.append("I {link(mbuilder)} ({mclassdef.mclass.name})") + res.append("
  • ") + else + res.append("
  • ") + res.append("R {link(mbuilder)} ({mclassdef.mclass.name})") + res.append("
  • ") + end + return res.to_s + end + + # Return a list item for the mpropdef + fun html_sidebar_item(page: NitdocClass): String do + var res = new Buffer + if is_intro and mclassdef.mclass == page.mclass then + res.append("
  • ") + res.append("I") + else if is_intro and mclassdef.mclass != page.mclass then + res.append("
  • ") + res.append("H") + else + res.append("
  • ") + res.append("R") + end + res.append(link(page.mbuilder)) + res.append("
  • ") + return res.to_s + end +end + +# +# Nodes redefs +# + +redef class AModule private fun comment: String do var ret = new Buffer - if n_doc != null then - for t in n_doc.n_comment do ret.append(t.text.substring_from(1)) + if n_moduledecl is null or n_moduledecl.n_doc is null then ret + if n_moduledecl.n_doc is null then return "" + for t in n_moduledecl.n_doc.n_comment do + ret.append(t.text.substring_from(1)) end return ret.to_s.html_escape end private fun short_comment: String do var ret = new Buffer - if n_doc != null then ret.append(n_doc.n_comment.first.text.substring_from(2).replace("\n", "")) + if n_moduledecl != null and n_moduledecl.n_doc != null then + ret.append(n_moduledecl.n_doc.n_comment.first.text.substring_from(2).replace("\n", "")) + end return ret.to_s.html_escape end end @@ -1330,18 +1348,6 @@ redef class AParam end end -redef class MType - fun link(mbuilder: ModelBuilder): String is abstract -end - -redef class MClassType - redef fun link(mbuilder) do return mclass.link(mbuilder) -end - -redef class MNullableType - redef fun link(mbuilder) do return "nullable {mtype.link(mbuilder)}" -end - redef class AType fun link: String do var ret = "{n_id.text}" @@ -1353,6 +1359,22 @@ redef class AType fun name: String do return n_id.text.html_escape end +redef class AStdClassdef + private fun comment: String do + var ret = new Buffer + if n_doc != null then + for t in n_doc.n_comment do ret.append(t.text.substring_from(1)) + end + return ret.to_s.html_escape + end + + private fun short_comment: String do + var ret = new Buffer + if n_doc != null then ret.append(n_doc.n_comment.first.text.substring_from(2).replace("\n", "")) + return ret.to_s.html_escape + end +end + redef class APropdef private fun short_comment: String is abstract private fun signature: String is abstract @@ -1389,25 +1411,6 @@ redef class AMethPropdef end end -redef class MClassDef - private fun namespace(mclass: MClass): String do - - if mmodule.public_owner is null then - return "{mmodule.full_name}::{mclass.name}" - else if mclass is self.mclass then - return "{mmodule.public_owner.name}::{mclass.name}" - else - return "{mmodule.public_owner.name}::{mclass.name}" - end - end -end - -redef class Set[E] - fun last: E do - return to_a[length-1] - end -end - # Create a tool context to handle options and paths var toolcontext = new ToolContext