Creates a new formatter that will output (mostly) RDoc markup
# File rdoc/markup/to_rdoc.rb, line 47 def initialize markup = nil super @markup.add_special(/\\S/, :SUPPRESSED_CROSSREF) @width = 78 init_tags @headings = {} @headings.default = [] @headings[1] = ['= ', ''] @headings[2] = ['== ', ''] @headings[3] = ['=== ', ''] @headings[4] = ['==== ', ''] @headings[5] = ['===== ', ''] @headings[6] = ['====== ', ''] end
Adds blank_line
to the output
# File rdoc/markup/to_rdoc.rb, line 77 def accept_blank_line blank_line @res << "\n" end
Adds heading
to the output
# File rdoc/markup/to_rdoc.rb, line 84 def accept_heading heading use_prefix or @res << ' ' * @indent @res << @headings[heading.level][0] @res << attributes(heading.text) @res << @headings[heading.level][1] @res << "\n" end
Adds paragraph
to the output
# File rdoc/markup/to_rdoc.rb, line 177 def accept_indented_paragraph paragraph @indent += paragraph.indent wrap attributes(paragraph.text) @indent -= paragraph.indent end
Finishes consumption of list
# File rdoc/markup/to_rdoc.rb, line 95 def accept_list_end list @list_index.pop @list_type.pop @list_width.pop end
Finishes consumption of list_item
# File rdoc/markup/to_rdoc.rb, line 104 def accept_list_item_end list_item width = case @list_type.last when :BULLET then 2 when :NOTE, :LABEL then @res << "\n" 2 else bullet = @list_index.last.to_s @list_index[-1] = @list_index.last.succ bullet.length + 2 end @indent -= width end
Prepares the visitor for consuming list_item
# File rdoc/markup/to_rdoc.rb, line 123 def accept_list_item_start list_item type = @list_type.last case type when :NOTE, :LABEL then bullet = attributes(list_item.label) + ":\n" @prefix = ' ' * @indent @indent += 2 @prefix << bullet + (' ' * @indent) else bullet = type == :BULLET ? '*' : @list_index.last.to_s + '.' @prefix = (' ' * @indent) + bullet.ljust(bullet.length + 1) width = bullet.length + 1 @indent += width end end
Prepares the visitor for consuming list
# File rdoc/markup/to_rdoc.rb, line 143 def accept_list_start list case list.type when :BULLET then @list_index << nil @list_width << 1 when :LABEL, :NOTE then @list_index << nil @list_width << 2 when :LALPHA then @list_index << 'a' @list_width << list.items.length.to_s.length when :NUMBER then @list_index << 1 @list_width << list.items.length.to_s.length when :UALPHA then @list_index << 'A' @list_width << list.items.length.to_s.length else raise RDoc::Error, "invalid list type #{list.type}" end @list_type << list.type end
Adds paragraph
to the output
# File rdoc/markup/to_rdoc.rb, line 170 def accept_paragraph paragraph wrap attributes(paragraph.text) end
Adds raw
to the output
# File rdoc/markup/to_rdoc.rb, line 186 def accept_raw raw @res << raw.parts.join("\n") end
Adds rule
to the output
# File rdoc/markup/to_rdoc.rb, line 193 def accept_rule rule use_prefix or @res << ' ' * @indent @res << '-' * (@width - @indent) @res << "\n" end
Outputs verbatim
indented 2 columns
# File rdoc/markup/to_rdoc.rb, line 202 def accept_verbatim verbatim indent = ' ' * (@indent + 2) verbatim.parts.each do |part| @res << indent unless part == "\n" @res << part end @res << "\n" unless @res =~ /\n\z/ end
Applies attribute-specific markup to text
using
RDoc::AttributeManager
# File rdoc/markup/to_rdoc.rb, line 216 def attributes text flow = @am.flow text.dup convert_flow flow end
Returns the generated output
# File rdoc/markup/to_rdoc.rb, line 224 def end_accepting @res.join end
Removes preceding \ from the suppressed crossref special
# File rdoc/markup/to_rdoc.rb, line 231 def handle_special_SUPPRESSED_CROSSREF special text = special.text text = text.sub('\', '') unless in_tt? text end
Prepares the visitor for text generation
# File rdoc/markup/to_rdoc.rb, line 240 def start_accepting @res = [""] @indent = 0 @prefix = nil @list_index = [] @list_type = [] @list_width = [] end
Adds the stored prefix to the output and clears it. Lists generate a prefix for later consumption.
# File rdoc/markup/to_rdoc.rb, line 254 def use_prefix prefix = @prefix @prefix = nil @res << prefix if prefix prefix end
Wraps text
to width
# File rdoc/markup/to_rdoc.rb, line 265 def wrap text return unless text && !text.empty? text_len = @width - @indent text_len = 20 if text_len < 20 re = /^(.{0,#{text_len}})[ \n]/ next_prefix = ' ' * @indent prefix = @prefix || next_prefix @prefix = nil @res << prefix while text.length > text_len if text =~ re then @res << $1 text.slice!(0, $&.length) else @res << text.slice!(0, text_len) end @res << "\n" << next_prefix end if text.empty? then @res.pop @res.pop else @res << text @res << "\n" end end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.