X-Git-Url: http://nitlanguage.org diff --git a/src/doc/doc_phases/doc_html.nit b/src/doc/doc_phases/doc_html.nit index 4439e98..ebc1193 100644 --- a/src/doc/doc_phases/doc_html.nit +++ b/src/doc/doc_phases/doc_html.nit @@ -46,7 +46,7 @@ redef class ToolContext # Display a custom brand or logo in the documentation top menu. var opt_custom_brand = new OptionString("custom link to external site", "--custom-brand") - # Display a custom introduction text before the projects overview. + # Display a custom introduction text before the packages overview. var opt_custom_intro = new OptionString("custom intro text for homepage", "--custom-overview-text") # Display a custom footer on each documentation page. # @@ -68,7 +68,7 @@ redef class ToolContext # FIXME redo the plugin var opt_github_base_sha1 = new OptionString("Git sha1 of base commit used to create pull request", "--github-base-sha1") # FIXME redo the plugin - var opt_github_gitdir = new OptionString("Git working directory used to resolve path name (ex: /home/me/myproject/)", "--github-gitdir") + var opt_github_gitdir = new OptionString("Git working directory used to resolve path name (ex: /home/me/mypackage/)", "--github-gitdir") redef init do super @@ -238,7 +238,13 @@ redef class SearchPage end redef class MEntityPage - redef var html_url is lazy do return mentity.nitdoc_url + redef var html_url is lazy do + if mentity isa MGroup and mentity.mdoc != null then + return "api_{mentity.nitdoc_url}" + end + return mentity.nitdoc_url + end + redef fun init_title(v, doc) do title = mentity.html_name end @@ -246,19 +252,45 @@ end # doc phases. This is to preserve the compatibility with the current # `doc_templates` module. +redef class ReadmePage + redef var html_url is lazy do return mentity.nitdoc_url + + redef fun init_topmenu(v, doc) do + super + var mpackage = mentity.mpackage + if not mentity.is_root then + topmenu.add_li new ListItem(new Link(mpackage.nitdoc_url, mpackage.html_name)) + end + topmenu.add_li new ListItem(new Link(html_url, mpackage.html_name)) + topmenu.active_item = topmenu.items.last + end + + redef fun init_sidebar(v, doc) do + super + var api_lnk = """Go to API""" + sidebar.boxes.unshift new DocSideBox(api_lnk, "") + end +end + redef class MGroupPage redef fun init_topmenu(v, doc) do super - var mproject = mentity.mproject + var mpackage = mentity.mpackage if not mentity.is_root then - topmenu.add_li new ListItem(new Link(mproject.nitdoc_url, mproject.html_name)) + topmenu.add_li new ListItem(new Link(mpackage.nitdoc_url, mpackage.html_name)) end - topmenu.add_li new ListItem(new Link(html_url, mproject.html_name)) + topmenu.add_li new ListItem(new Link(html_url, mpackage.html_name)) topmenu.active_item = topmenu.items.last end redef fun init_sidebar(v, doc) do super + # README link + if mentity.mdoc != null then + var doc_lnk = """Go to README""" + sidebar.boxes.unshift new DocSideBox(doc_lnk, "") + end + # MClasses list var mclasses = new HashSet[MClass] mclasses.add_all intros mclasses.add_all redefs @@ -291,8 +323,8 @@ end redef class MModulePage redef fun init_topmenu(v, doc) do super - var mproject = mentity.mproject - topmenu.add_li new ListItem(new Link(mproject.nitdoc_url, mproject.html_name)) + var mpackage = mentity.mpackage + topmenu.add_li new ListItem(new Link(mpackage.nitdoc_url, mpackage.html_name)) topmenu.add_li new ListItem(new Link(mentity.nitdoc_url, mentity.html_name)) topmenu.active_item = topmenu.items.last end @@ -302,8 +334,8 @@ redef class MModulePage # TODO filter here? super var mclasses = new HashSet[MClass] - mclasses.add_all mentity.filter_intro_mclasses(v.ctx.min_visibility) - mclasses.add_all mentity.filter_redef_mclasses(v.ctx.min_visibility) + mclasses.add_all mentity.collect_intro_mclasses(v.ctx.min_visibility) + mclasses.add_all mentity.collect_redef_mclasses(v.ctx.min_visibility) if mclasses.is_empty then return var list = new UnorderedList list.css_classes.add "list-unstyled list-labeled" @@ -335,8 +367,8 @@ redef class MClassPage redef fun init_topmenu(v, doc) do super - var mproject = mentity.intro_mmodule.mgroup.mproject - topmenu.add_li new ListItem(new Link(mproject.nitdoc_url, mproject.html_name)) + var mpackage = mentity.intro_mmodule.mgroup.mpackage + topmenu.add_li new ListItem(new Link(mpackage.nitdoc_url, mpackage.html_name)) topmenu.add_li new ListItem(new Link(html_url, mentity.html_name)) topmenu.active_item = topmenu.items.last end @@ -375,7 +407,7 @@ redef class MClassPage var def_url = "{cls_url}#{mprop.nitdoc_id}.definition" var lnk = new Link(def_url, mprop.html_name) var mdoc = mprop.intro.mdoc_or_fallback - if mdoc != null then lnk.title = mdoc.short_comment + if mdoc != null then lnk.title = mdoc.synopsis var item = new Template item.add new DocHTMLLabel.with_classes(classes) item.add lnk @@ -410,8 +442,8 @@ redef class MClassPage private fun mclass_inherited_mprops(v: RenderHTMLPhase, doc: DocModel): Set[MProperty] do var res = new HashSet[MProperty] - var local = mentity.local_mproperties(v.ctx.min_visibility) - for mprop in mentity.inherited_mproperties(doc.mainmodule, v.ctx.min_visibility) do + var local = mentity.collect_local_mproperties(v.ctx.min_visibility) + for mprop in mentity.collect_inherited_mproperties(v.ctx.min_visibility) do if local.has(mprop) then continue #if mprop isa MMethod and mprop.is_init then continue if mprop.intro.mclassdef.mclass.name == "Object" and @@ -439,9 +471,9 @@ redef class MPropertyPage redef fun init_topmenu(v, doc) do super var mmodule = mentity.intro_mclassdef.mmodule - var mproject = mmodule.mgroup.mproject + var mpackage = mmodule.mgroup.mpackage var mclass = mentity.intro_mclassdef.mclass - topmenu.add_li new ListItem(new Link(mproject.nitdoc_url, mproject.html_name)) + topmenu.add_li new ListItem(new Link(mpackage.nitdoc_url, mpackage.html_name)) topmenu.add_li new ListItem(new Link(mclass.nitdoc_url, mclass.html_name)) topmenu.add_li new ListItem(new Link(html_url, mentity.html_name)) topmenu.active_item = topmenu.items.last @@ -463,15 +495,15 @@ redef class MEntitySection if not page isa MEntityPage then return var mentity = self.mentity if mentity isa MGroup and mentity.is_root then - html_title = mentity.mproject.html_name - html_subtitle = mentity.mproject.html_declaration + html_title = mentity.mpackage.html_name + html_subtitle = mentity.mpackage.html_declaration else if mentity isa MProperty then var title = new Template title.add mentity.html_name title.add mentity.html_signature html_title = title html_subtitle = mentity.html_namespace - toc_title = mentity.html_name + html_toc_title = mentity.html_name end super end @@ -484,16 +516,16 @@ redef class ConcernSection var mentity = self.mentity if page isa MGroupPage then html_title = null - toc_title = mentity.html_name + html_toc_title = mentity.html_name is_toc_hidden = false else if page.mentity isa MModule and mentity isa MModule then var title = new Template if mentity == page.mentity then title.add "in " - toc_title = "in {mentity.html_name}" + html_toc_title = "in {mentity.html_name}" else title.add "from " - toc_title = "from {mentity.html_name}" + html_toc_title = "from {mentity.html_name}" end title.add mentity.html_namespace html_title = title @@ -503,7 +535,7 @@ redef class ConcernSection title.add "in " title.add mentity.html_namespace html_title = title - toc_title = "in {mentity.html_name}" + html_toc_title = "in {mentity.html_name}" end super end @@ -527,12 +559,12 @@ end redef class DefinitionArticle redef fun init_html_render(v, doc, page) do var mentity = self.mentity - if mentity isa MProject or mentity isa MModule then + if mentity isa MPackage or mentity isa MModule then var title = new Template title.add mentity.html_icon title.add mentity.html_namespace html_title = title - toc_title = mentity.html_name + html_toc_title = mentity.html_name if mentity isa MModule then html_source_link = v.html_source_link(mentity.location) end @@ -542,7 +574,7 @@ redef class DefinitionArticle title.add mentity.mmodule.html_namespace html_title = mentity.html_declaration html_subtitle = title - toc_title = "in {mentity.html_name}" + html_toc_title = "in {mentity.html_name}" html_source_link = v.html_source_link(mentity.location) if page isa MEntityPage and mentity.is_intro and mentity.mmodule != page.mentity then is_short_comment = true @@ -555,13 +587,13 @@ redef class DefinitionArticle title.add mentity.html_declaration html_title = title html_subtitle = mentity.html_namespace - toc_title = mentity.html_name + html_toc_title = mentity.html_name else var title = new Template title.add "in " title.add mentity.mclassdef.html_link html_title = title - toc_title = "in {mentity.mclassdef.html_name}" + html_toc_title = "in {mentity.mclassdef.html_name}" end html_source_link = v.html_source_link(mentity.location) end @@ -576,7 +608,7 @@ redef class HomeArticle redef fun init_html_render(v, doc, page) do if v.ctx.opt_custom_title.value != null then self.html_title = v.ctx.opt_custom_title.value.to_s - self.toc_title = v.ctx.opt_custom_title.value.to_s + self.html_toc_title = v.ctx.opt_custom_title.value.to_s end self.content = v.ctx.opt_custom_intro.value super @@ -585,15 +617,19 @@ end redef class GraphArticle redef fun init_html_render(v, doc, page) do - var output_dir = v.ctx.output_dir - var path = output_dir / graph_id - var path_sh = path.escape_to_sh + var path = v.ctx.output_dir / graph_id var file = new FileWriter.open("{path}.dot") file.write(dot) file.close - sys.system("\{ test -f {path_sh}.png && test -f {path_sh}.s.dot && diff -- {path_sh}.dot {path_sh}.s.dot >/dev/null 2>&1 ; \} || \{ cp -- {path_sh}.dot {path_sh}.s.dot && dot -Tpng -o{path_sh}.png -Tcmapx -o{path_sh}.map {path_sh}.s.dot ; \}") - var fmap = new FileReader.open("{path}.map") - self.map = fmap.read_all - fmap.close + var proc = new ProcessReader("dot", "-Tsvg", "-Tcmapx", "{path}.dot") + var svg = new Buffer + var i = 0 + while not proc.eof do + i += 1 + if i < 6 then continue # skip dot default header + svg.append proc.read_line + end + proc.close + self.svg = svg.write_to_string end end