Base class for RDoc markup formatters
Formatters are a visitor that converts an RDoc::Markup tree (from a comment) into some kind of output. RDoc ships with formatters for converting back to rdoc, ANSI text, HTML, a Table of Contents and other formats.
If you’d like to write your own Formatter use RDoc::Markup::FormatterTestCase. If you’re writing a text-output formatter use RDoc::Markup::TextFormatterTestCase which provides extra test cases.
Tag for inline markup containing a bit
for the bitmask and the
on
and off
triggers.
Creates a new Formatter
# File lib/rdoc/markup/formatter.rb, line 23
def initialize markup = nil
@markup = markup || RDoc::Markup.new
@am = @markup.attribute_manager
@am.add_special(%r<br>/, :HARD_BREAK)
@attr_tags = []
@in_tt = 0
@tt_bit = RDoc::Markup::Attribute.bitmap_for :TT
@hard_break = ''
end
Adds document
to the output
# File lib/rdoc/markup/formatter.rb, line 39
def accept_document document
document.parts.each do |item|
item.accept self
end
end
Add a new set of tags for an attribute. We allow separate start and end tags for flexibility
# File lib/rdoc/markup/formatter.rb, line 49
def add_tag(name, start, stop)
attr = RDoc::Markup::Attribute.bitmap_for name
@attr_tags << InlineTag.new(attr, start, stop)
end
Allows tag
to be decorated with additional information.
# File lib/rdoc/markup/formatter.rb, line 57
def annotate(tag)
tag
end
Marks up content
# File lib/rdoc/markup/formatter.rb, line 64
def convert content
@markup.convert content, self
end
Converts flow items flow
# File lib/rdoc/markup/formatter.rb, line 71
def convert_flow(flow)
res = []
flow.each do |item|
case item
when String then
res << convert_string(item)
when RDoc::Markup::AttrChanger then
off_tags res, item
on_tags res, item
when RDoc::Markup::Special then
res << convert_special(item)
else
raise "Unknown flow element: #{item.inspect}"
end
end
res.join
end
Converts added specials. See RDoc::Markup#add_special
# File lib/rdoc/markup/formatter.rb, line 94
def convert_special special
return special.text if in_tt?
handled = false
RDoc::Markup::Attribute.each_name_of special.type do |name|
method_name = "handle_special_#{name}"
if respond_to? method_name then
special.text = send method_name, special
handled = true
end
end
raise "Unhandled special: #{special}" unless handled
special.text
end
Converts a string to be fancier if desired
# File lib/rdoc/markup/formatter.rb, line 116
def convert_string string
string
end
Use ignore in your subclass to ignore the content of a node.
## # We don't support raw nodes in ToNoRaw alias accept_raw ignore
# File lib/rdoc/markup/formatter.rb, line 128
def ignore node
end
Are we currently inside tt tags?
# File lib/rdoc/markup/formatter.rb, line 134
def in_tt?
@in_tt > 0
end
Is tag
a tt tag?
# File lib/rdoc/markup/formatter.rb, line 171
def tt? tag
tag.bit == @tt_bit
end
/ | Search |
---|---|
? | Show this help |