RD format parser for headings, paragraphs, lists, verbatim sections that exist as blocks.
Footnotes for this document
Path to find included files in
Labels for items in this document
Creates a new RDoc::RD::BlockParser. Use parse to parse an rd-format document.
# File lib/rdoc/rd/block_parser.rb, line 52
def initialize
@inline_parser = RDoc::RD::InlineParser.new self
@include_path = []
# for testing
@footnotes = []
@labels = {}
end
Adds footnote content
to the document
# File lib/rdoc/rd/block_parser.rb, line 396
def add_footnote content
index = @footnotes.length + 1
footmark_link = "{^#{index}}[rdoc-label:footmark-#{index}:foottext-#{index}]"
@footnotes << RDoc::Markup::Paragraph.new(footmark_link, *content)
index
end
Adds label label
to the document
# File lib/rdoc/rd/block_parser.rb, line 409
def add_label label
@labels[label] = true
label
end
Retrieves the content of values
as a single String
# File lib/rdoc/rd/block_parser.rb, line 379
def content values
values.map { |value| value.content }.join
end
Current line number
# File lib/rdoc/rd/block_parser.rb, line 334
def line_index
@i
end
Raises a ParseError when invalid formatting is found
# File lib/rdoc/rd/block_parser.rb, line 318
def on_error(et, ev, _values)
prv, cur, nxt = format_line_num(@i, @i+1, @i+2)
raise ParseError, "
RD syntax error: line #{@i+1}:
#{prv} |#{@src[@i-1].chomp}
#{cur}=>|#{@src[@i].chomp}
#{nxt} |#{@src[@i+1].chomp}
"
end
Creates a paragraph for value
# File lib/rdoc/rd/block_parser.rb, line 386
def paragraph value
content = cut_off(value).join(' ').rstrip
contents = @inline_parser.parse content
RDoc::Markup::Paragraph.new(*contents)
end
Parses src
and returns an RDoc::Markup::Document.
# File lib/rdoc/rd/block_parser.rb, line 64
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
/ | Search |
---|---|
? | Show this help |