class RDoc::RD::BlockParser
RD
format parser for headings, paragraphs, lists, verbatim sections that exist as blocks.
Attributes
Footnotes for this document
Path to find included files in
Labels for items in this document
Public Class Methods
Source
# File lib/rdoc/rd/block_parser.rb, line 695 def initialize @inline_parser = RDoc::RD::InlineParser.new self @include_path = [] # for testing @footnotes = [] @labels = {} end
Creates a new RDoc::RD::BlockParser
. Use parse
to parse an rd-format document.
Public Instance Methods
Source
# File lib/rdoc/rd/block_parser.rb, line 1045 def add_footnote content index = @footnotes.length / 2 + 1 footmark_link = "{^#{index}}[rdoc-label:footmark-#{index}:foottext-#{index}]" @footnotes << RDoc::Markup::Paragraph.new(footmark_link, ' ', *content) @footnotes << RDoc::Markup::BlankLine.new index end
Adds footnote content
to the document
Source
# File lib/rdoc/rd/block_parser.rb, line 1059 def add_label label @labels[label] = true label end
Adds label label
to the document
Source
# File lib/rdoc/rd/block_parser.rb, line 1028 def content values values.map { |value| value.content }.join end
Retrieves the content of values
as a single String
Source
# File lib/rdoc/rd/block_parser.rb, line 983 def line_index @i end
Current line number
Source
# File lib/rdoc/rd/block_parser.rb, line 967 def on_error(et, ev, _values) prv, cur, nxt = format_line_num(@i, @i+1, @i+2) raise ParseError, <<Msg RD syntax error: line #{@i+1}: #{prv} |#{@src[@i-1].chomp} #{cur}=>|#{@src[@i].chomp} #{nxt} |#{@src[@i+1].chomp} Msg end
Raises a ParseError when invalid formatting is found
Source
# File lib/rdoc/rd/block_parser.rb, line 1035 def paragraph value content = cut_off(value).join(' ').rstrip contents = @inline_parser.parse content RDoc::Markup::Paragraph.new(*contents) end
Creates a paragraph for value
Source
# File lib/rdoc/rd/block_parser.rb, line 707 def parse src @src = src @src.push false @footnotes = [] @labels = {} # @i: index(line no.) of src @i = 0 # stack for current indentation @indent_stack = [] # how indented. @current_indent = @indent_stack.join("") # RDoc::RD::BlockParser for tmp src @subparser = nil # which part is in now @in_part = nil @part_content = [] @in_verbatim = false @yydebug = true document = do_parse unless @footnotes.empty? then blankline = document.parts.pop document.parts << RDoc::Markup::Rule.new(1) document.parts.concat @footnotes document.parts.push blankline end document end
Parses src
and returns an RDoc::Markup::Document
.