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 |