Racc::Parser
RD format parser for inline markup such as emphasis, links, footnotes, etc.
Creates a new RDoc::RD::Inline for the
rdoc markup and the raw reference
# File rdoc/rd/inline_parser.rb, line 238
def inline rdoc, reference = rdoc
RDoc::RD::Inline.new rdoc, reference
end
Returns the next token from the inline text
# File rdoc/rd/inline_parser.rb, line 107
def next_token
return [false, false] if @src.eos?
# p @src.rest if @yydebug
if ret = @src.scan(EM_OPEN_RE)
@pre << ret
[:EM_OPEN, ret]
elsif ret = @src.scan(EM_CLOSE_RE)
@pre << ret
[:EM_CLOSE, ret]
elsif ret = @src.scan(CODE_OPEN_RE)
@pre << ret
[:CODE_OPEN, ret]
elsif ret = @src.scan(CODE_CLOSE_RE)
@pre << ret
[:CODE_CLOSE, ret]
elsif ret = @src.scan(VAR_OPEN_RE)
@pre << ret
[:VAR_OPEN, ret]
elsif ret = @src.scan(VAR_CLOSE_RE)
@pre << ret
[:VAR_CLOSE, ret]
elsif ret = @src.scan(KBD_OPEN_RE)
@pre << ret
[:KBD_OPEN, ret]
elsif ret = @src.scan(KBD_CLOSE_RE)
@pre << ret
[:KBD_CLOSE, ret]
elsif ret = @src.scan(INDEX_OPEN_RE)
@pre << ret
[:INDEX_OPEN, ret]
elsif ret = @src.scan(INDEX_CLOSE_RE)
@pre << ret
[:INDEX_CLOSE, ret]
elsif ret = @src.scan(REF_OPEN_RE)
@pre << ret
[:REF_OPEN, ret]
elsif ret = @src.scan(REF_CLOSE_RE)
@pre << ret
[:REF_CLOSE, ret]
elsif ret = @src.scan(FOOTNOTE_OPEN_RE)
@pre << ret
[:FOOTNOTE_OPEN, ret]
elsif ret = @src.scan(FOOTNOTE_CLOSE_RE)
@pre << ret
[:FOOTNOTE_CLOSE, ret]
elsif ret = @src.scan(VERB_OPEN_RE)
@pre << ret
[:VERB_OPEN, ret]
elsif ret = @src.scan(VERB_CLOSE_RE)
@pre << ret
[:VERB_CLOSE, ret]
elsif ret = @src.scan(BAR_RE)
@pre << ret
[:BAR, ret]
elsif ret = @src.scan(QUOTE_RE)
@pre << ret
[:QUOTE, ret]
elsif ret = @src.scan(SLASH_RE)
@pre << ret
[:SLASH, ret]
elsif ret = @src.scan(BACK_SLASH_RE)
@pre << ret
[:BACK_SLASH, ret]
elsif ret = @src.scan(URL_RE)
@pre << ret
[:URL, ret]
elsif ret = @src.scan(OTHER_RE)
@pre << ret
[:OTHER, ret]
else
ret = @src.rest
@pre << ret
@src.terminate
[:OTHER, ret]
end
end
Returns words following an error
# File rdoc/rd/inline_parser.rb, line 227
def next_words_on_error
if n = @src.rest.index("\n")
@src.rest[0 .. (n-1)]
else
@src.rest
end
end
Raises a ParseError when invalid formatting is found
# File rdoc/rd/inline_parser.rb, line 187
def on_error(et, ev, values)
lines_of_rest = @src.rest.lines.to_a.length
prev_words = prev_words_on_error(ev)
at = 4 + prev_words.length
message = <<-MSG
RD syntax error: line #{@block_parser.line_index - lines_of_rest}:
...#{prev_words} #{(ev||'')} #{next_words_on_error()} ...
MSG
message << " " * at + "^" * (ev ? ev.length : 0) + "\n"
raise ParseError, message
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.