Class: RDoc::Markup::Formatter
Overview
Base class for RDoc markup formatters
Formatters use a visitor pattern to convert content into output.
Defined Under Namespace
Classes: InlineTag
Instance Method Summary (collapse)
-
- (Object) add_tag(name, start, stop)
Add a new set of tags for an attribute.
-
- (Object) annotate(tag)
Allows tag to be decorated with additional information.
-
- (Object) convert(content)
Marks up content.
-
- (Object) convert_flow(flow)
Converts flow items flow.
-
- (Object) convert_special(special)
Converts added specials.
-
- (Object) convert_string(string)
Converts a string to be fancier if desired.
-
- (Boolean) in_tt?
Are we currently inside tt tags?.
-
- (Formatter) initialize
constructor
Creates a new Formatter.
-
- (Object) off_tags(res, item)
Turns off tags for item on res.
-
- (Object) on_tags(res, item)
Turns on tags for item on res.
-
- (Boolean) tt?(tag)
Is tag a tt tag?.
Constructor Details
- (Formatter) initialize
Creates a new Formatter
19 20 21 22 23 24 25 26 |
# File 'lib/rdoc/markup/formatter.rb', line 19 def initialize @markup = RDoc::Markup.new @am = @markup.attribute_manager @attr_tags = [] @in_tt = 0 @tt_bit = RDoc::Markup::Attribute.bitmap_for :TT end |
Instance Method Details
- (Object) add_tag(name, start, stop)
Add a new set of tags for an attribute. We allow separate start and end tags for flexibility
32 33 34 35 |
# File 'lib/rdoc/markup/formatter.rb', line 32 def add_tag(name, start, stop) attr = RDoc::Markup::Attribute.bitmap_for name @attr_tags << InlineTag.new(attr, start, stop) end |
- (Object) annotate(tag)
Allows tag to be decorated with additional information.
40 41 42 |
# File 'lib/rdoc/markup/formatter.rb', line 40 def annotate(tag) tag end |
- (Object) convert(content)
Marks up content
47 48 49 |
# File 'lib/rdoc/markup/formatter.rb', line 47 def convert(content) @markup.convert content, self end |
- (Object) convert_flow(flow)
Converts flow items flow
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/rdoc/markup/formatter.rb', line 54 def convert_flow(flow) res = [] flow.each do |item| case item when String then res << convert_string(item) when RDoc::Markup::AttrChanger then res, item res, item when RDoc::Markup::Special then res << convert_special(item) else raise "Unknown flow element: #{item.inspect}" end end res.join end |
- (Object) convert_special(special)
Converts added specials. See RDoc::Markup#add_special
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/rdoc/markup/formatter.rb', line 77 def convert_special(special) 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 |
- (Object) convert_string(string)
Converts a string to be fancier if desired
97 98 99 |
# File 'lib/rdoc/markup/formatter.rb', line 97 def convert_string string string end |
- (Boolean) in_tt?
Are we currently inside tt tags?
104 105 106 |
# File 'lib/rdoc/markup/formatter.rb', line 104 def in_tt? @in_tt > 0 end |
- (Object) off_tags(res, item)
Turns off tags for item on res
126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/rdoc/markup/formatter.rb', line 126 def res, item attr_mask = item.turn_off return if attr_mask.zero? @attr_tags.reverse_each do |tag| if attr_mask & tag.bit != 0 then @in_tt -= 1 if tt? tag res << annotate(tag.off) end end end |
- (Object) on_tags(res, item)
Turns on tags for item on res
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/rdoc/markup/formatter.rb', line 111 def res, item attr_mask = item.turn_on return if attr_mask.zero? @attr_tags.each do |tag| if attr_mask & tag.bit != 0 then res << annotate(tag.on) @in_tt += 1 if tt? tag end end end |
- (Boolean) tt?(tag)
Is tag a tt tag?
141 142 143 |
# File 'lib/rdoc/markup/formatter.rb', line 141 def tt? tag tag.bit == @tt_bit end |