# Full comment HTML escaped
var full_comment: String is lazy do return content.join("\n").html_escape
+ private var markdown_proc: MarkdownProcessor is lazy do
+ return original_mentity.model.nitdoc_md_processor
+ end
+
+ private var inline_proc: MarkdownProcessor is lazy do
+ return original_mentity.model.nitdoc_inline_processor
+ end
+
# Synopsys in a template
- var tpl_short_comment: Streamable is lazy do
+ var tpl_short_comment: Writable is lazy do
var res = new Template
- var syn = nitdoc_inline_processor.process(content.first)
+ var syn = inline_proc.process(content.first)
res.add "<span class=\"synopsys nitdoc\">{syn}</span>"
return res
end
# Full comment in a template
- var tpl_comment: Streamable is lazy do
+ var tpl_comment: Writable is lazy do
var res = new Template
var lines = content.to_a
res.add "<div class=\"nitdoc\">"
if not content.first.has_prefix(" ") and
not content.first.has_prefix("\t") then
# parse synopsys
- var syn = nitdoc_inline_processor.process(lines.shift)
+ var syn = inline_proc.process(lines.shift)
res.add "<p class=\"synopsys\">{syn}</p>"
end
# check for annotations
for i in [0 .. lines.length[ do
var line = lines[i]
if line.to_upper.has_prefix("ENSURE") or line.to_upper.has_prefix("REQUIRE") then
- var html = nitdoc_inline_processor.process(line)
+ var html = inline_proc.process(line)
lines[i] = "<p class=\"contract\">{html}</p>"
else if line.to_upper.has_prefix("TODO") or line.to_upper.has_prefix("FIXME") then
- var html = nitdoc_inline_processor.process(line)
+ var html = inline_proc.process(line)
lines[i] = "<p class=\"todo\">{html}</p>"
end
end
# add other lines
- res.add nitdoc_md_processor.process(lines.join("\n"))
+ res.add markdown_proc.process(lines.join("\n"))
res.add "</div>"
return res
end
end
end
+# Decorator for span elements.
+#
+# Because inline comments can appear as span elements,
+# InlineDecorator do not decorate things like paragraphs or headers.
private class InlineDecorator
super NitdocDecorator
v.emit_in block
end
+ redef fun add_headline(v, block) do
+ v.emit_in block
+ end
+
redef fun add_code(v, block) do
# Try to parse code
var ast = toolcontext.parse_something(block.block.text.to_s)
end
end
-# Get a markdown processor for Nitdoc comments.
-private fun nitdoc_md_processor: MarkdownProcessor do
- var proc = new MarkdownProcessor
- proc.emitter.decorator = new NitdocDecorator
- return once proc
-end
+redef class Model
+ # Get a markdown processor for Nitdoc comments.
+ private var nitdoc_md_processor: MarkdownProcessor is lazy do
+ var proc = new MarkdownProcessor
+ proc.emitter.decorator = new NitdocDecorator
+ return proc
+ end
-# Get a markdown inline processor for Nitdoc comments.
-#
-# This processor is specificaly designed to inlinable doc elements like synopsys.
-private fun nitdoc_inline_processor: MarkdownProcessor do
- var proc = new MarkdownProcessor
- proc.emitter.decorator = new InlineDecorator
- return once proc
+ # Get a markdown inline processor for Nitdoc comments.
+ #
+ # This processor is specificaly designed to inlinable doc elements like synopsys.
+ private var nitdoc_inline_processor: MarkdownProcessor is lazy do
+ var proc = new MarkdownProcessor
+ proc.emitter.decorator = new InlineDecorator
+ return proc
+ end
end