Merge: Added contributing guidelines and link from readme
[nit.git] / src / web / web_views.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 # Nitcorn actions used by the nitweb server.
16 module web_views
17
18 import web_base
19 import model_html
20 import highlight
21 import markdown
22
23 # Html homepage for the `nitweb` server.
24 class HtmlHomePage
25 super NitView
26
27 # Loaded model to display.
28 var tree: MEntityTree
29
30 redef fun render do
31 var tpl = new Template
32 tpl.add new Header(1, "Loaded model")
33 tpl.add tree.html_list
34 return tpl
35 end
36 end
37
38 # Display the source for each mentities
39 class HtmlSourcePage
40 super NitView
41
42 # Modelbuilder used to access sources.
43 var modelbuilder: ModelBuilder
44
45 # MEntity to display
46 var mentity: MEntity
47
48 # HiglightVisitor used to hilight the source code
49 var hl = new HighlightVisitor
50
51 redef fun render do
52 var tpl = new Template
53 tpl.add new Header(1, "Source Code")
54 tpl.add render_source
55 return tpl
56 end
57
58 private fun render_source: Template do
59 var node = modelbuilder.mentity2node(mentity)
60 var tpl = new Template
61 tpl.add new Header(3, "Source code")
62 if node == null then
63 tpl.add "<p>Source for {mentity.html_name} not found.<p>"
64 else
65 hl.enter_visit node
66 tpl.add "<pre><code>"
67 tpl.add hl.html
68 tpl.add "</code></pre>"
69 end
70 return tpl
71 end
72 end
73
74 # Display the mdoc of the mentities.
75 class HtmlDocPage
76 super HtmlSourcePage
77
78 redef fun render do
79 var tpl = new Template
80 tpl.add new Header(1, mentity.html_name)
81 tpl.add "<p>"
82 tpl.add mentity.html_declaration
83 tpl.add "</p>"
84 tpl.add "<br>"
85 var mdoc = mentity.mdoc
86 if mdoc != null then
87 tpl.add mdoc.content.join("\n").md_to_html
88 end
89 tpl.add "<br>"
90 tpl.add render_source
91 return tpl
92 end
93 end