import model::model_json
import doc_down
import popcorn
+import popcorn::pop_config
-# Specific nitcorn Action that uses a Model
-class ModelHandler
- super Handler
+# Nitweb config file.
+class NitwebConfig
+ super AppConfig
# Model to use.
var model: Model
# MModule used to flatten model.
var mainmodule: MModule
+ # Modelbuilder used to access sources.
+ var modelbuilder: ModelBuilder
+end
+
+# Specific nitcorn Action that uses a Model
+class ModelHandler
+ super Handler
+
+ # App config.
+ var config: NitwebConfig
+
# Find the MEntity ` with `full_name`.
fun find_mentity(model: ModelView, full_name: nullable String): nullable MEntity do
if full_name == null then return null
# Init the model view from the `req` uri parameters.
fun init_model_view(req: HttpRequest): ModelView do
- var view = new ModelView(model)
+ var view = new ModelView(config.model)
var show_private = req.bool_arg("private") or else false
if not show_private then view.min_visibility = protected_visibility
#
# So we can cache the model view.
var view: ModelView is lazy do
- var view = new ModelView(model)
+ var view = new ModelView(config.model)
view.min_visibility = private_visibility
view.include_fictive = true
view.include_empty_doc = true
end
end
+# A Rooter dedicated to APIHandlers.
+class APIRouter
+ super Router
+
+ # App config.
+ var config: NitwebConfig
+end
+
redef class MEntity
# URL to `self` within the web interface.
- fun web_url: String is abstract
+ fun web_url: String do return "/doc/" / full_name
# URL to `self` within the JSON api.
fun api_url: String do return "/api/entity/" / full_name
end
end
-redef class MPackage
- redef var web_url = "/package/{full_name}" is lazy
-end
-
-redef class MGroup
- redef var web_url = "/group/{full_name}" is lazy
-end
-
redef class MModule
- redef var web_url = "/module/{full_name}" is lazy
-
redef fun api_json(handler) do
var obj = super
obj["intro_mclassdefs"] = to_mentity_refs(collect_intro_mclassdefs(private_view))
end
redef class MClass
- redef var web_url = "/class/{full_name}" is lazy
-
redef fun api_json(handler) do
var obj = super
obj["all_mproperties"] = to_mentity_refs(collect_accessible_mproperties(private_view))
end
redef class MClassDef
- redef var web_url = "/classdef/{full_name}" is lazy
-
redef fun json do
var obj = super
obj["intro"] = to_mentity_ref(mclass.intro)
end
redef class MProperty
- redef var web_url = "/property/{full_name}" is lazy
-
redef fun json do
var obj = super
obj["intro_mclass"] = to_mentity_ref(intro_mclassdef.mclass)
end
redef class MPropDef
- redef var web_url = "/propdef/{full_name}" is lazy
-
redef fun json do
var obj = super
obj["intro"] = to_mentity_ref(mproperty.intro)