module doc_concerns
import doc_pages
+import model::model_collect
# ConcernsPhase computes the ConcernsTree used for each page layout.
class ConcernsPhase
# Populates the given DocModel.
redef fun apply do
- for page in doc.pages.values do page.build_concerns(doc)
+ for page in doc.pages.values do page.build_concerns(self)
end
end
# Build the `concerns` tree for this page.
#
# Since only `MEntityPage`, this method is a no-op for everything else.
- private fun build_concerns(doc: DocModel) do end
+ private fun build_concerns(v: ConcernsPhase) do end
end
redef class MEntityPage
# Refined classes in `mentity` that should appear in this page.
var redefs = new HashSet[MClass]
- redef fun build_concerns(doc) do
+ redef fun build_concerns(v) do
+ var doc = v.doc
var mmodules = new HashSet[MModule]
- for mmodule in mentity.collect_mmodules do
- if doc.mmodules.has(mmodule) then mmodules.add mmodule
+ for mmodule in mentity.mmodules do
+ if doc.filter.accept_mentity(mmodule) then mmodules.add mmodule
# collect mclasses
for mclass in mmodule.intro_mclasses do
- if doc.mclasses.has(mclass) then intros.add mclass
+ if doc.filter.accept_mentity(mclass) then intros.add mclass
end
- for mclass in mmodule.redef_mclasses do
- if doc.mclasses.has(mclass) then redefs.add mclass
+ for mclass in mmodule.collect_redef_mclasses(doc.filter) do
+ if doc.filter.accept_mentity(mclass) then redefs.add mclass
end
end
concerns = doc.model.concerns_tree(mmodules)
# MClassDefs located in `mentity` to display in this page.
var mclassdefs = new HashSet[MClassDef]
- redef fun build_concerns(doc) do
+ redef fun build_concerns(v) do
+ var doc = v.doc
# extract mclassdefs in mmodule
for mclassdef in mentity.mclassdefs do
- if doc.mclassdefs.has(mclassdef) then mclassdefs.add mclassdef
+ if doc.filter.accept_mentity(mclassdef) then mclassdefs.add mclassdef
end
# extract mclasses in mmodule
for mclassdef in mclassdefs do
var mclass = mclassdef.mclass
- if doc.mclasses.has(mclass) then mclasses.add mclass
+ if doc.filter.accept_mentity(mclass) then mclasses.add mclass
end
# extract concerns
var mods = new HashSet[MModule]
for mclass in mclasses do
var mod = mclass.intro_mmodule
- if doc.mmodules.has(mod) then mods.add mod
+ if doc.filter.accept_mentity(mod) then mods.add mod
end
concerns = doc.model.concerns_tree(mods)
end
# MPropdefs to display in this page.
var mpropdefs = new HashSet[MPropDef]
- redef fun build_concerns(doc) do
+ redef fun build_concerns(v) do
+ var doc = v.doc
# collect mclassdefs
for mclassdef in mentity.mclassdefs do
- if doc.mclassdefs.has(mclassdef) then mclassdefs.add mclassdef
+ if doc.filter.accept_mentity(mclassdef) then mclassdefs.add mclassdef
end
# collect mpropdefs
for mclassdef in mclassdefs do
for mpropdef in mclassdef.mpropdefs do
- if doc.mpropdefs.has(mpropdef) then mpropdefs.add mpropdef
+ if doc.filter.accept_mentity(mpropdef) then mpropdefs.add mpropdef
end
end
# collect concerns
var mods = new HashSet[MModule]
for mpropdef in mpropdefs do
var mod = mpropdef.mclassdef.mmodule
- if doc.mmodules.has(mod) then mods.add mod
+ if doc.filter.accept_mentity(mod) then mods.add mod
end
concerns = doc.model.concerns_tree(mods)
end
# MPropdefs to display in this page.
var mpropdefs = new HashSet[MPropDef]
- redef fun build_concerns(doc) do
+ redef fun build_concerns(v) do
+ var doc = v.doc
# collect mpropdefs
for mpropdef in mentity.mpropdefs do
# FIXME diff hack
if mpropdef.is_intro then continue
- if doc.mpropdefs.has(mpropdef) then mpropdefs.add mpropdef
+ if doc.filter.accept_mentity(mpropdef) then mpropdefs.add mpropdef
end
# collect concerns
var mods = new HashSet[MModule]
for mpropdef in mpropdefs do
var mod = mpropdef.mclassdef.mmodule
- if doc.mmodules.has(mod) then mods.add mod
+ if doc.filter.accept_mentity(mod) then mods.add mod
end
concerns = doc.model.concerns_tree(mods)
end