private var opt_github_base_sha1: OptionString = new OptionString("The sha1 of the base commit used to create pull request", "--github-base-sha1")
private var opt_github_gitdir: OptionString = new OptionString("The git working directory used to resolve path name (ex: /home/me/myproject/)", "--github-gitdir")
+ private var opt_piwik_tracker: OptionString = new OptionString("The URL of the Piwik tracker (ex: nitlanguage.org/piwik/)", "--piwik-tracker")
+ private var opt_piwik_site_id: OptionString = new OptionString("The site ID in Piwik tracker", "--piwik-site-id")
+
init do
toolcontext.option_context.add_option(opt_dir)
toolcontext.option_context.add_option(opt_source)
toolcontext.option_context.add_option(opt_github_upstream)
toolcontext.option_context.add_option(opt_github_base_sha1)
toolcontext.option_context.add_option(opt_github_gitdir)
+ toolcontext.option_context.add_option(opt_piwik_tracker)
+ toolcontext.option_context.add_option(opt_piwik_site_id)
toolcontext.process_options
self.arguments = toolcontext.option_context.rest
if arguments.length < 1 then
print "usage: nitdoc [options] file..."
toolcontext.option_context.usage
- exit(1)
+ exit(0)
end
self.process_options
end
private fun process_options do
- if not opt_dir.value is null then
+ if opt_dir.value != null then
output_dir = opt_dir.value
else
output_dir = "doc"
end
- if not opt_sharedir.value is null then
+ if opt_sharedir.value != null then
share_dir = opt_sharedir.value
else
var dir = "NIT_DIR".environ
dir = "{dir}/share/nitdoc"
end
share_dir = dir
- if share_dir is null then
+ if share_dir == null then
print "Error: Cannot locate nitdoc share files. Uses --sharedir or envvar NIT_DIR"
abort
end
dir = "{share_dir.to_s}/scripts/js-facilities.js"
- if share_dir is null then
+ if share_dir == null then
print "Error: Invalid nitdoc share files. Check --sharedir or envvar NIT_DIR"
abort
end
end
private fun overview do
- var overviewpage = new NitdocOverview(self, dot_dir)
+ var overviewpage = new NitdocOverview(self)
overviewpage.save("{output_dir.to_s}/index.html")
end
private fun modules do
for mmodule in model.mmodules do
if mmodule.name == "<main>" then continue
- var modulepage = new NitdocModule(mmodule, self, dot_dir)
+ var modulepage = new NitdocModule(mmodule, self)
modulepage.save("{output_dir.to_s}/{mmodule.url}")
end
end
private fun classes do
for mclass in mbuilder.model.mclasses do
- var classpage = new NitdocClass(mclass, self, dot_dir, source)
+ var classpage = new NitdocClass(mclass, self)
classpage.save("{output_dir.to_s}/{mclass.url}")
end
end
# Nitdoc base page
abstract class NitdocPage
- var dot_dir: nullable String
- var source: nullable String
var ctx: NitdocContext
init(ctx: NitdocContext) do
# Generate a clickable graphviz image using a dot content
protected fun generate_dot(dot: String, name: String, alt: String) do
- var output_dir = dot_dir
+ var output_dir = ctx.dot_dir
if output_dir == null then return
var file = new OFStream.open("{output_dir}/{name}.dot")
file.write(dot)
# Add a (source) link for a given location
protected fun show_source(l: Location): String
do
+ var source = ctx.source
if source == null then
return "({l.file.filename.simplify_path})"
else
source = x.join(l.line_start.to_s)
x = source.split_with("%L")
source = x.join(l.line_end.to_s)
+ source = source.simplify_path
return " (<a target='_blank' title='Show source' href=\"{source.to_s}\">source</a>)"
end
end
if ctx.opt_custom_footer_text.value != null then footed = "footed"
append("<div class='page {footed}'>")
content
+
+ # piwik tracking
+ var tracker_url = ctx.opt_piwik_tracker.value
+ var site_id = ctx.opt_piwik_site_id.value
+ if tracker_url != null and site_id != null then
+ append("<!-- Piwik -->")
+ append("<script type=\"text/javascript\">")
+ append(" var _paq = _paq || [];")
+ append(" _paq.push([\"trackPageView\"]);")
+ append(" _paq.push([\"enableLinkTracking\"]);")
+ append(" (function() \{")
+ append(" var u=((\"https:\" == document.location.protocol) ? \"https\" : \"http\") + \"://{tracker_url}\";")
+ append(" _paq.push([\"setTrackerUrl\", u+\"piwik.php\"]);")
+ append(" _paq.push([\"setSiteId\", \"{site_id}\"]);")
+ append(" var d=document, g=d.createElement(\"script\"), s=d.getElementsByTagName(\"script\")[0]; g.type=\"text/javascript\";")
+ append(" g.defer=true; g.async=true; g.src=u+\"piwik.js\"; s.parentNode.insertBefore(g,s);")
+ append(" \})();")
+ append(" </script>")
+ append("<!-- End Piwik Code -->")
+ end
append("</div>")
footer
append("</body>")
private var mbuilder: ModelBuilder
private var mmodules = new Array[MModule]
- init(ctx: NitdocContext, dot_dir: nullable String) do
+ init(ctx: NitdocContext) do
super(ctx)
self.mbuilder = ctx.mbuilder
- self.dot_dir = dot_dir
# get modules
var mmodules = new HashSet[MModule]
for mmodule in mbuilder.model.mmodule_importation_hierarchy do
init(ctx: NitdocContext) do
super(ctx)
- self.dot_dir = null
end
redef fun title do return "Search"
private var intro_mclasses = new HashSet[MClass]
private var redef_mclasses = new HashSet[MClass]
- init(mmodule: MModule, ctx: NitdocContext, dot_dir: nullable String) do
+ init(mmodule: MModule, ctx: NitdocContext) do
super(ctx)
self.mmodule = mmodule
self.mbuilder = ctx.mbuilder
- self.dot_dir = dot_dir
# get local mclasses
for m in mmodule.in_nesting.greaters do
for mclassdef in m.mclassdefs do
private var meths = new HashSet[MMethodDef]
private var inherited = new HashSet[MPropDef]
- init(mclass: MClass, ctx: NitdocContext, dot_dir: nullable String, source: nullable String) do
+ init(mclass: MClass, ctx: NitdocContext) do
super(ctx)
self.mclass = mclass
- self.dot_dir = dot_dir
- self.source = source
# load properties
var locals = new HashSet[MProperty]
for mclassdef in mclass.mclassdefs do
super
append("<li><a href='index.html'>Overview</a></li>")
var public_owner = mclass.public_owner
- if public_owner is null then
+ if public_owner == null then
append("<li>")
mclass.intro_mmodule.html_link(self)
append("</li>")
page.append("<div class='description'>")
if page.ctx.mbuilder.mmodule2nmodule.has_key(self) then
var nmodule = page.ctx.mbuilder.mmodule2nmodule[self]
- if not page.ctx.github_gitdir is null then
+ if page.ctx.github_gitdir != null then
var loc = nmodule.doc_location.github(page.ctx.github_gitdir.as(not null))
page.append("<textarea class='baseComment' data-comment-namespace='{full_name}' data-comment-location='{loc}'>{nmodule.full_comment}</textarea>")
end
if page.ctx.mbuilder.mclassdef2nclassdef.has_key(mclassdef) then
var nclass = page.ctx.mbuilder.mclassdef2nclassdef[mclassdef]
if nclass isa AStdClassdef then
- if not page.ctx.github_gitdir is null then
+ if page.ctx.github_gitdir != null then
var loc = nclass.doc_location.github(page.ctx.github_gitdir.as(not null))
page.append("<textarea class='baseComment' data-comment-namespace='{mclassdef.mmodule.full_name}::{name}' data-comment-location='{loc}'>{nclass.full_comment}</textarea>")
end
if page.ctx.mbuilder.mclassdef2nclassdef.has_key(intro) then
var nclass = page.ctx.mbuilder.mclassdef2nclassdef[intro]
if nclass isa AStdClassdef then
- if not page.ctx.github_gitdir is null then
+ if page.ctx.github_gitdir != null then
var loc = nclass.doc_location.github(page.ctx.github_gitdir.as(not null))
page.append("<textarea class='baseComment' data-comment-namespace='{intro.mmodule.full_name}::{name}' data-comment-location='{loc}'>{nclass.full_comment}</textarea>")
end