From 8ecb432d1284e30752659903ee0b3f67ca7f2b21 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Wed, 19 Mar 2014 15:41:55 -0400 Subject: [PATCH] modelbuilder: fill the `mdoc` of entities Signed-off-by: Jean Privat --- src/modelbuilder.nit | 32 ++++++++++++++++++++++++++++++++ src/modelize_class.nit | 5 +++++ src/modelize_property.nit | 15 +++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/src/modelbuilder.nit b/src/modelbuilder.nit index a97535e..fa86cf2 100644 --- a/src/modelbuilder.nit +++ b/src/modelbuilder.nit @@ -529,6 +529,11 @@ class ModelBuilder nmodules.add(nmodule) self.mmodule2nmodule[mmodule] = nmodule + if decl != null then + var ndoc = decl.n_doc + if ndoc != null then mmodule.mdoc = ndoc.to_mdoc + end + return mmodule end @@ -656,3 +661,30 @@ end redef class APrivateVisibility redef fun mvisibility do return private_visibility end + +redef class ADoc + private var mdoc_cache: nullable MDoc + fun to_mdoc: MDoc + do + var res = mdoc_cache + if res != null then return res + res = new MDoc + for c in n_comment do + var text = c.text + if text.length < 2 then + res.content.add "" + continue + end + assert text.chars[0] == '#' + if text.chars[1] == ' ' then + text = text.substring_from(2) # eat starting `#` and space + else + text = text.substring_from(1) # eat atarting `#` only + end + if text.chars.last == '\n' then text = text.substring(0, text.length-1) # drop \n + res.content.add(text) + end + mdoc_cache = res + return res + end +end diff --git a/src/modelize_class.nit b/src/modelize_class.nit index e8a207b..34b5c28 100644 --- a/src/modelize_class.nit +++ b/src/modelize_class.nit @@ -161,6 +161,11 @@ redef class ModelBuilder nclassdef.mclassdef = mclassdef self.mclassdef2nclassdef[mclassdef] = nclassdef + if nclassdef isa AStdClassdef then + var ndoc = nclassdef.n_doc + if ndoc != null then mclassdef.mdoc = ndoc.to_mdoc + end + if mclassdef.is_intro then self.toolcontext.info("{mclassdef} introduces new {mclass.kind} {mclass.full_name}", 3) else diff --git a/src/modelize_property.nit b/src/modelize_property.nit index 980dfc7..1245af5 100644 --- a/src/modelize_property.nit +++ b/src/modelize_property.nit @@ -238,6 +238,12 @@ redef class APropdef return mvisibility end + private fun set_doc(mpropdef: MPropDef) + do + var ndoc = self.n_doc + if ndoc != null then mpropdef.mdoc = ndoc.to_mdoc + end + private fun check_redef_property_visibility(modelbuilder: ModelBuilder, nclassdef: AClassdef, nvisibility: nullable AVisibility, mprop: MProperty) do if nvisibility == null then return @@ -416,6 +422,8 @@ redef class AMethPropdef mclassdef.propdef_names.add(mpropdef.mproperty.name) + set_doc(mpropdef) + self.mpropdef = mpropdef modelbuilder.mpropdef2npropdef[mpropdef] = self if mpropdef.is_intro then @@ -594,6 +602,7 @@ redef class AAttrPropdef var mpropdef = new MAttributeDef(mclassdef, mprop, self.location) self.mpropdef = mpropdef modelbuilder.mpropdef2npropdef[mpropdef] = self + set_doc(mpropdef) var nreadable = self.n_readable if nreadable != null then @@ -612,6 +621,7 @@ redef class AAttrPropdef var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location) self.mreadpropdef = mreadpropdef modelbuilder.mpropdef2npropdef[mreadpropdef] = self + mreadpropdef.mdoc = mpropdef.mdoc end var nwritable = self.n_writable @@ -631,6 +641,7 @@ redef class AAttrPropdef var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location) self.mwritepropdef = mwritepropdef modelbuilder.mpropdef2npropdef[mwritepropdef] = self + mwritepropdef.mdoc = mpropdef.mdoc end else # New attribute style @@ -639,6 +650,7 @@ redef class AAttrPropdef var mpropdef = new MAttributeDef(mclassdef, mprop, self.location) self.mpropdef = mpropdef modelbuilder.mpropdef2npropdef[mpropdef] = self + set_doc(mpropdef) var readname = name var mreadprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, readname).as(nullable MMethod) @@ -655,6 +667,7 @@ redef class AAttrPropdef var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location) self.mreadpropdef = mreadpropdef modelbuilder.mpropdef2npropdef[mreadpropdef] = self + mreadpropdef.mdoc = mpropdef.mdoc var writename = name + "=" var nwritable = self.n_writable @@ -681,6 +694,7 @@ redef class AAttrPropdef var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location) self.mwritepropdef = mwritepropdef modelbuilder.mpropdef2npropdef[mwritepropdef] = self + mwritepropdef.mdoc = mpropdef.mdoc end end @@ -869,6 +883,7 @@ redef class ATypePropdef var mpropdef = new MVirtualTypeDef(mclassdef, mprop, self.location) self.mpropdef = mpropdef + set_doc(mpropdef) end redef fun build_signature(modelbuilder, nclassdef) -- 1.7.9.5