# Display the tree of all loaded mentities.
class TreeAction
- super ModelAction
+ super ModelHandler
- redef fun answer(request, url) do
- var model = init_model_view(request)
+ redef fun get(req, res) do
+ var model = init_model_view(req)
var view = new HtmlHomePage(model.to_tree)
- return render_view(view)
- end
-end
-
-# Display the list of mentities matching `namespace`.
-class SearchAction
- super ModelAction
-
- # TODO handle more than full namespaces.
- redef fun answer(request, url) do
- var namespace = request.param("namespace")
- var model = init_model_view(request)
- var mentity = find_mentity(model, namespace)
- if mentity == null then
- return render_error(404, "No mentity found")
- end
- if request.is_json_asked then
- return render_json(mentity.to_json)
- end
- var view = new HtmlResultPage(namespace or else "null", [mentity])
- return render_view(view)
- end
-end
-
-# Display a MEntity source code.
-class CodeAction
- super ModelAction
-
- # Modelbuilder used to access sources.
- var modelbuilder: ModelBuilder
-
- redef fun answer(request, url) do
- var namespace = request.param("namespace")
- var model = init_model_view(request)
- var mentity = find_mentity(model, namespace)
- if mentity == null then
- return render_error(404, "No mentity found")
- end
- var view = new HtmlSourcePage(modelbuilder, mentity)
- return render_view(view)
+ res.send_view(view)
end
end
# Display the doc of a MEntity.
class DocAction
- super ModelAction
+ super ModelHandler
# Modelbuilder used to access sources.
var modelbuilder: ModelBuilder
- # TODO handle more than full namespaces.
- redef fun answer(request, url) do
- var namespace = request.param("namespace")
- var model = init_model_view(request)
+ redef fun get(req, res) do
+ var namespace = req.param("namespace")
+ var model = init_model_view(req)
var mentity = find_mentity(model, namespace)
if mentity == null then
- return render_error(404, "No mentity found")
+ res.error(404)
+ return
end
var view = new HtmlDocPage(modelbuilder, mentity)
- return render_view(view)
- end
-end
-
-# Return an UML diagram for `namespace`.
-class UMLDiagramAction
- super ModelAction
-
- # Mainmodule used for hierarchy flattening.
- var mainmodule: MModule
-
- redef fun answer(request, url) do
- var namespace = request.param("namespace")
- var model = init_model_view(request)
- var mentity = find_mentity(model, namespace)
- if mentity == null then
- return render_error(404, "No mentity found")
- end
-
- var dot
- if mentity isa MClassDef then mentity = mentity.mclass
- if mentity isa MClass then
- var uml = new UMLModel(model, mainmodule)
- dot = uml.generate_class_uml.write_to_string
- else if mentity isa MModule then
- var uml = new UMLModel(model, mentity)
- dot = uml.generate_package_uml.write_to_string
- else
- return render_error(404, "No diagram matching this namespace.")
- end
- var view = new HtmlDotPage(dot, mentity.as(not null).html_name)
- return render_view(view)
- end
-end
-
-# Return a random list of MEntities.
-class RandomAction
- super ModelAction
-
- # TODO handle more than full namespaces.
- redef fun answer(request, url) do
- var n = request.int_arg("n") or else 10
- var k = request.string_arg("k") or else "modules"
- var model = init_model_view(request)
- var mentities: Array[MEntity]
- if k == "modules" then
- mentities = model.mmodules.to_a
- else if k == "classdefs" then
- mentities = model.mclassdefs.to_a
- else
- mentities = model.mpropdefs.to_a
- end
- mentities.shuffle
- mentities = mentities.sub(0, n)
- if request.is_json_asked then
- var json = new JsonArray
- for mentity in mentities do
- json.add mentity.to_json
- end
- return render_json(json)
- end
- var view = new HtmlResultPage("random", mentities)
- return render_view(view)
+ res.send_view(view)
end
end