src/doc: ConcernsArticle use new templates
authorAlexandre Terrasa <alexandre@moz-code.org>
Mon, 23 Feb 2015 23:23:25 +0000 (00:23 +0100)
committerAlexandre Terrasa <alexandre@moz-code.org>
Sat, 25 Apr 2015 01:37:21 +0000 (21:37 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

src/doc/doc_phases/doc_html.nit
src/doc/html_templates/html_model.nit
src/doc/html_templates/html_templates.nit

index d96d2f9..20bf2c4 100644 (file)
@@ -613,11 +613,8 @@ end
 
 redef class ConcernsArticle
        redef fun render(v, doc, page, parent) do
-               # FIXME diff hack
-               var title = "concerns"
-               if page.mentity isa MProperty then title = "Concerns"
                parent.add_child new TplArticle.
-                       with_content(title, "Concerns", concerns.to_tpl)
+                       with_content("concerns", "Concerns", write_to_string)
        end
 end
 
index f3c2751..a1e0283 100644 (file)
@@ -571,6 +571,56 @@ redef class MParameter
        end
 end
 
+redef class ConcernsTree
+       # Render `self` as a hierarchical UnorderedList.
+       fun html_list: UnorderedList do
+               var lst = new UnorderedList
+               lst.css_classes.add "list-unstyled list-definition"
+               for r in roots do
+                       var li = r.html_concern_item
+                       lst.add_li li
+                       build_html_list(r, li)
+               end
+               return lst
+       end
+
+       # Build the html list recursively.
+       private fun build_html_list(e: MConcern, li: ListItem) do
+               if not sub.has_key(e) then return
+               var subs = sub[e]
+               var lst = new UnorderedList
+               lst.css_classes.add "list-unstyled list-definition"
+               for e2 in subs do
+                       if e2 isa MGroup and e2.is_root then
+                               build_html_list(e2, li)
+                       else
+                               var sli = e2.html_concern_item
+                               lst.add_li sli
+                               build_html_list(e2, sli)
+                       end
+               end
+               var text = new Template
+               text.add li.text
+               if not lst.is_empty then text.add lst
+               li.text = text
+       end
+end
+
+redef class MConcern
+       # Return a li element for `self` that can be displayed in a concern list
+       private fun html_concern_item: ListItem do
+               var lnk = html_link
+               var tpl = new Template
+               tpl.add new Link.with_title("#{nitdoc_id}", lnk.text, lnk.title)
+               var comment = html_short_comment
+               if comment != null then
+                       tpl.add ": "
+                       tpl.add comment
+               end
+               return new ListItem(tpl)
+       end
+end
+
 ################################################################################
 # Additions to `model_ext`.
 
index 51af59c..3dba2d9 100644 (file)
@@ -278,3 +278,11 @@ redef class IntroArticle
                super
        end
 end
+
+redef class ConcernsArticle
+       redef var html_id is lazy do return "article_concerns_{mentity.nitdoc_id}"
+       redef var html_title = "Concerns"
+       redef fun is_hidden do return concerns.is_empty
+
+       redef fun render_body do add concerns.html_list
+end