module api_model
import web_base
-import highlight
+import htmlight
import uml
import model::model_index
return mentities
end
+ # Filter mentities based on the config view filters
+ fun filter_mentities(req: HttpRequest, mentities: Array[MEntity]): Array[MEntity] do
+ var res = new Array[MEntity]
+ for mentity in mentities do
+ if config.view.filter.accept_mentity(mentity) then res.add mentity
+ end
+ return res
+ end
+
# Sort mentities by lexicographic order
#
# TODO choose order from request
- fun sort_mentities(req: HttpRequest, mentities: Array[MEntity]) : Array[MEntity] do
+ fun sort_mentities(req: HttpRequest, mentities: Array[MEntity]): Array[MEntity] do
var sorted = mentities.to_a
var sorter = new MEntityNameSorter
sorter.sort(sorted)
redef fun get(req, res) do
var mentities = list_mentities(req)
+ mentities = filter_mentities(req, mentities)
mentities = randomize_mentities(req, mentities)
mentities = limit_mentities(req, mentities)
res.json new JsonArray.from(mentities)
redef fun get(req, res) do
var mentity = mentity_from_uri(req, res)
if mentity == null then return
- res.raw_json mentity.to_full_json
+ res.raw_json mentity.to_full_json(config.view.mainmodule)
end
end
redef fun get(req, res) do
var mentity = mentity_from_uri(req, res)
if mentity == null then return
- var mentities: Array[MEntity]
+ var mentities = new Array[MEntity]
if mentity isa MPackage then
- mentities = mentity.mgroups.to_a
+ mentities.add_all mentity.collect_mgroups(config.view)
+ mentities.add_all mentity.collect_mmodules(config.view)
else if mentity isa MGroup then
- mentities = new Array[MEntity]
- mentities.add_all mentity.in_nesting.direct_smallers
- mentities.add_all mentity.mmodules
+ mentities.add_all mentity.collect_mgroups(config.view)
+ mentities.add_all mentity.collect_mmodules(config.view)
else if mentity isa MModule then
- mentities = mentity.mclassdefs
+ mentities.add_all mentity.collect_local_mclassdefs(config.view)
else if mentity isa MClass then
- mentities = mentity.mclassdefs
+ mentities.add_all mentity.collect_mclassdefs(config.view)
else if mentity isa MClassDef then
- mentities = mentity.mpropdefs
+ mentities.add_all mentity.collect_mpropdefs(config.view)
else if mentity isa MProperty then
- mentities = mentity.mpropdefs
+ mentities.add_all mentity.collect_mpropdefs(config.view)
else
res.api_error(404, "No definition list for mentity `{mentity.full_name}`")
return
end
+ mentities = filter_mentities(req, mentities)
mentities = sort_mentities(req, mentities)
mentities = limit_mentities(req, mentities)
res.json new JsonArray.from(mentities)
private fun render_source(mentity: MEntity): nullable HTMLTag do
var node = config.modelbuilder.mentity2node(mentity)
if node == null then return null
- var hl = new HighlightVisitor
- hl.enter_visit node
+ var hl = new HtmlightVisitor
+ hl.highlight_node node
return hl.html
end
end