ruby/lib/rdoc/markdown.rb
Hartley McGuire d0c17cbd09
Require space between hash/content in ATX heading (#1140)
While writing some Markdown documentation for Rails, I came across an
interesting case where trying to link to an instance method at the start
of a line would instead parse as an H1 heading:

```markdown
#response_body=
```

Expected:

```html
<a href=""><code>#response_body=</code></a>
```

Actual:

```html
<h1>response_body=</h1>
```

According to the CommonMark spec:

> At least one space or tab is required between the # characters and the
> heading’s contents, unless the heading is empty. Note that many
> implementations currently do not require the space. However, the space
> was required by the original ATX implementation, and it helps prevent
> things like the following from being parsed as headings:
>
> Example 64

So while some implementations do not follow this requirement, I believe
RDoc should because it makes it easy to write text similar to Example 64
(which was used in the new test) and it also enables automatically
linking to instance methods at the start of a line.
2024-07-18 09:40:01 +09:00

16793 lines
389 KiB
Ruby

# coding: UTF-8
# frozen_string_literal: true
# :markup: markdown
##
# RDoc::Markdown as described by the [markdown syntax][syntax].
#
# To choose Markdown as your only default format see
# RDoc::Options@Saved+Options for instructions on setting up a `.rdoc_options`
# file to store your project default.
#
# ## Usage
#
# Here is a brief example of using this parse to read a markdown file by hand.
#
# data = File.read("README.md")
# formatter = RDoc::Markup::ToHtml.new(RDoc::Options.new, nil)
# html = RDoc::Markdown.parse(data).accept(formatter)
#
# # do something with html
#
# ## Extensions
#
# The following markdown extensions are supported by the parser, but not all
# are used in RDoc output by default.
#
# ### RDoc
#
# The RDoc Markdown parser has the following built-in behaviors that cannot be
# disabled.
#
# Underscores embedded in words are never interpreted as emphasis. (While the
# [markdown dingus][dingus] emphasizes in-word underscores, neither the
# Markdown syntax nor MarkdownTest mention this behavior.)
#
# For HTML output, RDoc always auto-links bare URLs.
#
# ### Break on Newline
#
# The break_on_newline extension converts all newlines into hard line breaks
# as in [Github Flavored Markdown][GFM]. This extension is disabled by
# default.
#
# ### CSS
#
# The #css extension enables CSS blocks to be included in the output, but they
# are not used for any built-in RDoc output format. This extension is disabled
# by default.
#
# Example:
#
# <style type="text/css">
# h1 { font-size: 3em }
# </style>
#
# ### Definition Lists
#
# The definition_lists extension allows definition lists using the [PHP
# Markdown Extra syntax][PHPE], but only one label and definition are supported
# at this time. This extension is enabled by default.
#
# Example:
#
# ```
# cat
# : A small furry mammal
# that seems to sleep a lot
#
# ant
# : A little insect that is known
# to enjoy picnics
#
# ```
#
# Produces:
#
# cat
# : A small furry mammal
# that seems to sleep a lot
#
# ant
# : A little insect that is known
# to enjoy picnics
#
# ### Strike
#
# Example:
#
# ```
# This is ~~striked~~.
# ```
#
# Produces:
#
# This is ~~striked~~.
#
# ### Github
#
# The #github extension enables a partial set of [Github Flavored Markdown]
# [GFM]. This extension is enabled by default.
#
# Supported github extensions include:
#
# #### Fenced code blocks
#
# Use ` ``` ` around a block of code instead of indenting it four spaces.
#
# #### Syntax highlighting
#
# Use ` ``` ruby ` as the start of a code fence to add syntax highlighting.
# (Currently only `ruby` syntax is supported).
#
# ### HTML
#
# Enables raw HTML to be included in the output. This extension is enabled by
# default.
#
# Example:
#
# <table>
# ...
# </table>
#
# ### Notes
#
# The #notes extension enables footnote support. This extension is enabled by
# default.
#
# Example:
#
# Here is some text[^1] including an inline footnote ^[for short footnotes]
#
# ...
#
# [^1]: With the footnote text down at the bottom
#
# Produces:
#
# Here is some text[^1] including an inline footnote ^[for short footnotes]
#
# [^1]: With the footnote text down at the bottom
#
# ## Limitations
#
# * Link titles are not used
# * Footnotes are collapsed into a single paragraph
#
# ## Author
#
# This markdown parser is a port to kpeg from [peg-markdown][pegmarkdown] by
# John MacFarlane.
#
# It is used under the MIT license:
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
# The port to kpeg was performed by Eric Hodel and Evan Phoenix
#
# [dingus]: http://daringfireball.net/projects/markdown/dingus
# [GFM]: https://github.github.com/gfm/
# [pegmarkdown]: https://github.com/jgm/peg-markdown
# [PHPE]: https://michelf.ca/projects/php-markdown/extra/#def-list
# [syntax]: http://daringfireball.net/projects/markdown/syntax
#--
# Last updated to jgm/peg-markdown commit 8f8fc22ef0
class RDoc::Markdown
# :stopdoc:
# This is distinct from setup_parser so that a standalone parser
# can redefine #initialize and still have access to the proper
# parser setup code.
def initialize(str, debug=false)
setup_parser(str, debug)
end
# Prepares for parsing +str+. If you define a custom initialize you must
# call this method before #parse
def setup_parser(str, debug=false)
set_string str, 0
@memoizations = Hash.new { |h,k| h[k] = {} }
@result = nil
@failed_rule = nil
@failing_rule_offset = -1
@line_offsets = nil
setup_foreign_grammar
end
attr_reader :string
attr_reader :failing_rule_offset
attr_accessor :result, :pos
def current_column(target=pos)
if string[target] == "\n" && (c = string.rindex("\n", target-1) || -1)
return target - c
elsif c = string.rindex("\n", target)
return target - c
end
target + 1
end
def position_line_offsets
unless @position_line_offsets
@position_line_offsets = []
total = 0
string.each_line do |line|
total += line.size
@position_line_offsets << total
end
end
@position_line_offsets
end
if [].respond_to? :bsearch_index
def current_line(target=pos)
if line = position_line_offsets.bsearch_index {|x| x > target }
return line + 1
end
raise "Target position #{target} is outside of string"
end
else
def current_line(target=pos)
if line = position_line_offsets.index {|x| x > target }
return line + 1
end
raise "Target position #{target} is outside of string"
end
end
def current_character(target=pos)
if target < 0 || target >= string.size
raise "Target position #{target} is outside of string"
end
string[target, 1]
end
KpegPosInfo = Struct.new(:pos, :lno, :col, :line, :char)
def current_pos_info(target=pos)
l = current_line target
c = current_column target
ln = get_line(l-1)
chr = string[target,1]
KpegPosInfo.new(target, l, c, ln, chr)
end
def lines
string.lines
end
def get_line(no)
loff = position_line_offsets
if no < 0
raise "Line No is out of range: #{no} < 0"
elsif no >= loff.size
raise "Line No is out of range: #{no} >= #{loff.size}"
end
lend = loff[no]-1
lstart = no > 0 ? loff[no-1] : 0
string[lstart..lend]
end
def get_text(start)
@string[start..@pos-1]
end
# Sets the string and current parsing position for the parser.
def set_string string, pos
@string = string
@string_size = string ? string.size : 0
@pos = pos
@position_line_offsets = nil
end
def show_pos
width = 10
if @pos < width
"#{@pos} (\"#{@string[0,@pos]}\" @ \"#{@string[@pos,width]}\")"
else
"#{@pos} (\"... #{@string[@pos - width, width]}\" @ \"#{@string[@pos,width]}\")"
end
end
def failure_info
l = current_line @failing_rule_offset
c = current_column @failing_rule_offset
if @failed_rule.kind_of? Symbol
info = self.class::Rules[@failed_rule]
"line #{l}, column #{c}: failed rule '#{info.name}' = '#{info.rendered}'"
else
"line #{l}, column #{c}: failed rule '#{@failed_rule}'"
end
end
def failure_caret
p = current_pos_info @failing_rule_offset
"#{p.line.chomp}\n#{' ' * (p.col - 1)}^"
end
def failure_character
current_character @failing_rule_offset
end
def failure_oneline
p = current_pos_info @failing_rule_offset
if @failed_rule.kind_of? Symbol
info = self.class::Rules[@failed_rule]
"@#{p.lno}:#{p.col} failed rule '#{info.name}', got '#{p.char}'"
else
"@#{p.lno}:#{p.col} failed rule '#{@failed_rule}', got '#{p.char}'"
end
end
class ParseError < RuntimeError
end
def raise_error
raise ParseError, failure_oneline
end
def show_error(io=STDOUT)
error_pos = @failing_rule_offset
p = current_pos_info(error_pos)
io.puts "On line #{p.lno}, column #{p.col}:"
if @failed_rule.kind_of? Symbol
info = self.class::Rules[@failed_rule]
io.puts "Failed to match '#{info.rendered}' (rule '#{info.name}')"
else
io.puts "Failed to match rule '#{@failed_rule}'"
end
io.puts "Got: #{p.char.inspect}"
io.puts "=> #{p.line}"
io.print(" " * (p.col + 2))
io.puts "^"
end
def set_failed_rule(name)
if @pos > @failing_rule_offset
@failed_rule = name
@failing_rule_offset = @pos
end
end
attr_reader :failed_rule
def match_string(str)
len = str.size
if @string[pos,len] == str
@pos += len
return str
end
return nil
end
def scan(reg)
if m = reg.match(@string, @pos)
@pos = m.end(0)
return true
end
return nil
end
if "".respond_to? :ord
def get_byte
if @pos >= @string_size
return nil
end
s = @string[@pos].ord
@pos += 1
s
end
else
def get_byte
if @pos >= @string_size
return nil
end
s = @string[@pos]
@pos += 1
s
end
end
def parse(rule=nil)
# We invoke the rules indirectly via apply
# instead of by just calling them as methods because
# if the rules use left recursion, apply needs to
# manage that.
if !rule
apply(:_root)
else
method = rule.gsub("-","_hyphen_")
apply :"_#{method}"
end
end
class MemoEntry
def initialize(ans, pos)
@ans = ans
@pos = pos
@result = nil
@set = false
@left_rec = false
end
attr_reader :ans, :pos, :result, :set
attr_accessor :left_rec
def move!(ans, pos, result)
@ans = ans
@pos = pos
@result = result
@set = true
@left_rec = false
end
end
def external_invoke(other, rule, *args)
old_pos = @pos
old_string = @string
set_string other.string, other.pos
begin
if val = __send__(rule, *args)
other.pos = @pos
other.result = @result
else
other.set_failed_rule "#{self.class}##{rule}"
end
val
ensure
set_string old_string, old_pos
end
end
def apply_with_args(rule, *args)
@result = nil
memo_key = [rule, args]
if m = @memoizations[memo_key][@pos]
@pos = m.pos
if !m.set
m.left_rec = true
return nil
end
@result = m.result
return m.ans
else
m = MemoEntry.new(nil, @pos)
@memoizations[memo_key][@pos] = m
start_pos = @pos
ans = __send__ rule, *args
lr = m.left_rec
m.move! ans, @pos, @result
# Don't bother trying to grow the left recursion
# if it's failing straight away (thus there is no seed)
if ans and lr
return grow_lr(rule, args, start_pos, m)
else
return ans
end
end
end
def apply(rule)
@result = nil
if m = @memoizations[rule][@pos]
@pos = m.pos
if !m.set
m.left_rec = true
return nil
end
@result = m.result
return m.ans
else
m = MemoEntry.new(nil, @pos)
@memoizations[rule][@pos] = m
start_pos = @pos
ans = __send__ rule
lr = m.left_rec
m.move! ans, @pos, @result
# Don't bother trying to grow the left recursion
# if it's failing straight away (thus there is no seed)
if ans and lr
return grow_lr(rule, nil, start_pos, m)
else
return ans
end
end
end
def grow_lr(rule, args, start_pos, m)
while true
@pos = start_pos
@result = m.result
if args
ans = __send__ rule, *args
else
ans = __send__ rule
end
return nil unless ans
break if @pos <= m.pos
m.move! ans, @pos, @result
end
@result = m.result
@pos = m.pos
return m.ans
end
class RuleInfo
def initialize(name, rendered)
@name = name
@rendered = rendered
end
attr_reader :name, :rendered
end
def self.rule_info(name, rendered)
RuleInfo.new(name, rendered)
end
# :startdoc:
require_relative '../rdoc'
require_relative 'markup/to_joined_paragraph'
require_relative 'markdown/entities'
require_relative 'markdown/literals'
##
# Supported extensions
EXTENSIONS = []
##
# Extensions enabled by default
DEFAULT_EXTENSIONS = [
:definition_lists,
:github,
:html,
:notes,
:strike,
]
# :section: Extensions
##
# Creates extension methods for the `name` extension to enable and disable
# the extension and to query if they are active.
def self.extension name
EXTENSIONS << name
define_method "#{name}?" do
extension? name
end
define_method "#{name}=" do |enable|
extension name, enable
end
end
##
# Converts all newlines into hard breaks
extension :break_on_newline
##
# Allow style blocks
extension :css
##
# Allow PHP Markdown Extras style definition lists
extension :definition_lists
##
# Allow Github Flavored Markdown
extension :github
##
# Allow HTML
extension :html
##
# Enables the notes extension
extension :notes
##
# Enables the strike extension
extension :strike
# :section:
##
# Parses the `markdown` document into an RDoc::Document using the default
# extensions.
def self.parse markdown
parser = new
parser.parse markdown
end
# TODO remove when kpeg 0.10 is released
alias orig_initialize initialize # :nodoc:
##
# Creates a new markdown parser that enables the given +extensions+.
def initialize extensions = DEFAULT_EXTENSIONS, debug = false
@debug = debug
@formatter = RDoc::Markup::ToJoinedParagraph.new
@extensions = extensions
@references = nil
@unlinked_references = nil
@footnotes = nil
@note_order = nil
end
##
# Wraps `text` in emphasis for rdoc inline formatting
def emphasis text
if text =~ /\A[a-z\d.\/]+\z/i then
"_#{text}_"
else
"<em>#{text}</em>"
end
end
##
# :category: Extensions
#
# Is the extension `name` enabled?
def extension? name
@extensions.include? name
end
##
# :category: Extensions
#
# Enables or disables the extension with `name`
def extension name, enable
if enable then
@extensions |= [name]
else
@extensions -= [name]
end
end
##
# Parses `text` in a clone of this parser. This is used for handling nested
# lists the same way as markdown_parser.
def inner_parse text # :nodoc:
parser = clone
parser.setup_parser text, @debug
parser.peg_parse
doc = parser.result
doc.accept @formatter
doc.parts
end
##
# Finds a link reference for `label` and creates a new link to it with
# `content` as the link text. If `label` was not encountered in the
# reference-gathering parser pass the label and content are reconstructed
# with the linking `text` (usually whitespace).
def link_to content, label = content, text = nil
raise ParseError, 'enable notes extension' if
content.start_with? '^' and label.equal? content
if ref = @references[label] then
"{#{content}}[#{ref}]"
elsif label.equal? content then
"[#{content}]#{text}"
else
"[#{content}]#{text}[#{label}]"
end
end
##
# Creates an RDoc::Markup::ListItem by parsing the `unparsed` content from
# the first parsing pass.
def list_item_from unparsed
parsed = inner_parse unparsed.join
RDoc::Markup::ListItem.new nil, *parsed
end
##
# Stores `label` as a note and fills in previously unknown note references.
def note label
#foottext = "rdoc-label:foottext-#{label}:footmark-#{label}"
#ref.replace foottext if ref = @unlinked_notes.delete(label)
@notes[label] = foottext
#"{^1}[rdoc-label:footmark-#{label}:foottext-#{label}] "
end
##
# Creates a new link for the footnote `reference` and adds the reference to
# the note order list for proper display at the end of the document.
def note_for ref
@note_order << ref
label = @note_order.length
"{*#{label}}[rdoc-label:foottext-#{label}:footmark-#{label}]"
end
##
# The internal kpeg parse method
alias peg_parse parse # :nodoc:
##
# Creates an RDoc::Markup::Paragraph from `parts` and including
# extension-specific behavior
def paragraph parts
parts = parts.map do |part|
if "\n" == part then
RDoc::Markup::HardBreak.new
else
part
end
end if break_on_newline?
RDoc::Markup::Paragraph.new(*parts)
end
##
# Parses `markdown` into an RDoc::Document
def parse markdown
@references = {}
@unlinked_references = {}
markdown += "\n\n"
setup_parser markdown, @debug
peg_parse 'References'
if notes? then
@footnotes = {}
setup_parser markdown, @debug
peg_parse 'Notes'
# using note_order on the first pass would be a bug
@note_order = []
end
setup_parser markdown, @debug
peg_parse
doc = result
if notes? and not @footnotes.empty? then
doc << RDoc::Markup::Rule.new(1)
@note_order.each_with_index do |ref, index|
label = index + 1
note = @footnotes[ref] or raise ParseError, "footnote [^#{ref}] not found"
link = "{^#{label}}[rdoc-label:footmark-#{label}:foottext-#{label}] "
note.parts.unshift link
doc << note
end
end
doc.accept @formatter
doc
end
##
# Stores `label` as a reference to `link` and fills in previously unknown
# link references.
def reference label, link
if ref = @unlinked_references.delete(label) then
ref.replace link
end
@references[label] = link
end
##
# Wraps `text` in strong markup for rdoc inline formatting
def strong text
if text =~ /\A[a-z\d.\/-]+\z/i then
"*#{text}*"
else
"<b>#{text}</b>"
end
end
##
# Wraps `text` in strike markup for rdoc inline formatting
def strike text
if text =~ /\A[a-z\d.\/-]+\z/i then
"~#{text}~"
else
"<s>#{text}</s>"
end
end
# :stopdoc:
def setup_foreign_grammar
@_grammar_literals = RDoc::Markdown::Literals.new(nil)
end
# root = Doc
def _root
_tmp = apply(:_Doc)
set_failed_rule :_root unless _tmp
return _tmp
end
# Doc = BOM? Block*:a { RDoc::Markup::Document.new(*a.compact) }
def _Doc
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = apply(:_BOM)
unless _tmp
_tmp = true
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
_ary = []
while true
_tmp = apply(:_Block)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::Document.new(*a.compact) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Doc unless _tmp
return _tmp
end
# Block = @BlankLine* (BlockQuote | Verbatim | CodeFence | Table | Note | Reference | HorizontalRule | Heading | OrderedList | BulletList | DefinitionList | HtmlBlock | StyleBlock | Para | Plain)
def _Block
_save = self.pos
while true # sequence
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
while true # choice
_tmp = apply(:_BlockQuote)
break if _tmp
self.pos = _save2
_tmp = apply(:_Verbatim)
break if _tmp
self.pos = _save2
_tmp = apply(:_CodeFence)
break if _tmp
self.pos = _save2
_tmp = apply(:_Table)
break if _tmp
self.pos = _save2
_tmp = apply(:_Note)
break if _tmp
self.pos = _save2
_tmp = apply(:_Reference)
break if _tmp
self.pos = _save2
_tmp = apply(:_HorizontalRule)
break if _tmp
self.pos = _save2
_tmp = apply(:_Heading)
break if _tmp
self.pos = _save2
_tmp = apply(:_OrderedList)
break if _tmp
self.pos = _save2
_tmp = apply(:_BulletList)
break if _tmp
self.pos = _save2
_tmp = apply(:_DefinitionList)
break if _tmp
self.pos = _save2
_tmp = apply(:_HtmlBlock)
break if _tmp
self.pos = _save2
_tmp = apply(:_StyleBlock)
break if _tmp
self.pos = _save2
_tmp = apply(:_Para)
break if _tmp
self.pos = _save2
_tmp = apply(:_Plain)
break if _tmp
self.pos = _save2
break
end # end choice
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Block unless _tmp
return _tmp
end
# Para = @NonindentSpace Inlines:a @BlankLine+ { paragraph a }
def _Para
_save = self.pos
while true # sequence
_tmp = _NonindentSpace()
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Inlines)
a = @result
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _BlankLine()
if _tmp
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
@result = begin; paragraph a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Para unless _tmp
return _tmp
end
# Plain = Inlines:a { paragraph a }
def _Plain
_save = self.pos
while true # sequence
_tmp = apply(:_Inlines)
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; paragraph a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Plain unless _tmp
return _tmp
end
# AtxInline = !@Newline !(@Sp /#*/ @Sp @Newline) Inline
def _AtxInline
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save3
break
end
_tmp = scan(/\G(?-mix:#*)/)
unless _tmp
self.pos = _save3
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save3
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save3
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save2
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Inline)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_AtxInline unless _tmp
return _tmp
end
# AtxStart = < /\#{1,6}/ > { text.length }
def _AtxStart
_save = self.pos
while true # sequence
_text_start = self.pos
_tmp = scan(/\G(?-mix:\#{1,6})/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; text.length ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_AtxStart unless _tmp
return _tmp
end
# AtxHeading = AtxStart:s @Spacechar+ AtxInline+:a (@Sp /#*/ @Sp)? @Newline { RDoc::Markup::Heading.new(s, a.join) }
def _AtxHeading
_save = self.pos
while true # sequence
_tmp = apply(:_AtxStart)
s = @result
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _Spacechar()
if _tmp
while true
_tmp = _Spacechar()
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_ary = []
_tmp = apply(:_AtxInline)
if _tmp
_ary << @result
while true
_tmp = apply(:_AtxInline)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save2
end
a = @result
unless _tmp
self.pos = _save
break
end
_save3 = self.pos
_save4 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save4
break
end
_tmp = scan(/\G(?-mix:#*)/)
unless _tmp
self.pos = _save4
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save4
end
break
end # end sequence
unless _tmp
_tmp = true
self.pos = _save3
end
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::Heading.new(s, a.join) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_AtxHeading unless _tmp
return _tmp
end
# SetextHeading = (SetextHeading1 | SetextHeading2)
def _SetextHeading
_save = self.pos
while true # choice
_tmp = apply(:_SetextHeading1)
break if _tmp
self.pos = _save
_tmp = apply(:_SetextHeading2)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_SetextHeading unless _tmp
return _tmp
end
# SetextBottom1 = /={1,}/ @Newline
def _SetextBottom1
_save = self.pos
while true # sequence
_tmp = scan(/\G(?-mix:={1,})/)
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_SetextBottom1 unless _tmp
return _tmp
end
# SetextBottom2 = /-{1,}/ @Newline
def _SetextBottom2
_save = self.pos
while true # sequence
_tmp = scan(/\G(?-mix:-{1,})/)
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_SetextBottom2 unless _tmp
return _tmp
end
# SetextHeading1 = &(@RawLine SetextBottom1) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom1 { RDoc::Markup::Heading.new(1, a.join) }
def _SetextHeading1
_save = self.pos
while true # sequence
_save1 = self.pos
_save2 = self.pos
while true # sequence
_tmp = _RawLine()
unless _tmp
self.pos = _save2
break
end
_tmp = apply(:_SetextBottom1)
unless _tmp
self.pos = _save2
end
break
end # end sequence
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save3 = self.pos
_save4 = self.pos
while true # sequence
_save5 = self.pos
_tmp = _Endline()
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save4
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save4
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save4
end
break
end # end sequence
if _tmp
while true
_save6 = self.pos
while true # sequence
_save7 = self.pos
_tmp = _Endline()
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save6
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save6
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save6
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save3
end
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_SetextBottom1)
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::Heading.new(1, a.join) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_SetextHeading1 unless _tmp
return _tmp
end
# SetextHeading2 = &(@RawLine SetextBottom2) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom2 { RDoc::Markup::Heading.new(2, a.join) }
def _SetextHeading2
_save = self.pos
while true # sequence
_save1 = self.pos
_save2 = self.pos
while true # sequence
_tmp = _RawLine()
unless _tmp
self.pos = _save2
break
end
_tmp = apply(:_SetextBottom2)
unless _tmp
self.pos = _save2
end
break
end # end sequence
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save3 = self.pos
_save4 = self.pos
while true # sequence
_save5 = self.pos
_tmp = _Endline()
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save4
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save4
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save4
end
break
end # end sequence
if _tmp
while true
_save6 = self.pos
while true # sequence
_save7 = self.pos
_tmp = _Endline()
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save6
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save6
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save6
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save3
end
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_SetextBottom2)
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::Heading.new(2, a.join) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_SetextHeading2 unless _tmp
return _tmp
end
# Heading = (SetextHeading | AtxHeading)
def _Heading
_save = self.pos
while true # choice
_tmp = apply(:_SetextHeading)
break if _tmp
self.pos = _save
_tmp = apply(:_AtxHeading)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Heading unless _tmp
return _tmp
end
# BlockQuote = BlockQuoteRaw:a { RDoc::Markup::BlockQuote.new(*a) }
def _BlockQuote
_save = self.pos
while true # sequence
_tmp = apply(:_BlockQuoteRaw)
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::BlockQuote.new(*a) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_BlockQuote unless _tmp
return _tmp
end
# BlockQuoteRaw = @StartList:a (">" " "? Line:l { a << l } (!">" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }
def _BlockQuoteRaw
_save = self.pos
while true # sequence
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_save2 = self.pos
while true # sequence
_tmp = match_string(">")
unless _tmp
self.pos = _save2
break
end
_save3 = self.pos
_tmp = match_string(" ")
unless _tmp
_tmp = true
self.pos = _save3
end
unless _tmp
self.pos = _save2
break
end
_tmp = apply(:_Line)
l = @result
unless _tmp
self.pos = _save2
break
end
@result = begin; a << l ; end
_tmp = true
unless _tmp
self.pos = _save2
break
end
while true
_save5 = self.pos
while true # sequence
_save6 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save5
break
end
_save7 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save5
break
end
_tmp = apply(:_Line)
c = @result
unless _tmp
self.pos = _save5
break
end
@result = begin; a << c ; end
_tmp = true
unless _tmp
self.pos = _save5
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save2
break
end
while true
_save9 = self.pos
while true # sequence
_tmp = _BlankLine()
n = @result
unless _tmp
self.pos = _save9
break
end
@result = begin; a << n ; end
_tmp = true
unless _tmp
self.pos = _save9
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
if _tmp
while true
_save10 = self.pos
while true # sequence
_tmp = match_string(">")
unless _tmp
self.pos = _save10
break
end
_save11 = self.pos
_tmp = match_string(" ")
unless _tmp
_tmp = true
self.pos = _save11
end
unless _tmp
self.pos = _save10
break
end
_tmp = apply(:_Line)
l = @result
unless _tmp
self.pos = _save10
break
end
@result = begin; a << l ; end
_tmp = true
unless _tmp
self.pos = _save10
break
end
while true
_save13 = self.pos
while true # sequence
_save14 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save14
unless _tmp
self.pos = _save13
break
end
_save15 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save15
unless _tmp
self.pos = _save13
break
end
_tmp = apply(:_Line)
c = @result
unless _tmp
self.pos = _save13
break
end
@result = begin; a << c ; end
_tmp = true
unless _tmp
self.pos = _save13
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save10
break
end
while true
_save17 = self.pos
while true # sequence
_tmp = _BlankLine()
n = @result
unless _tmp
self.pos = _save17
break
end
@result = begin; a << n ; end
_tmp = true
unless _tmp
self.pos = _save17
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save10
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
@result = begin; inner_parse a.join ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_BlockQuoteRaw unless _tmp
return _tmp
end
# NonblankIndentedLine = !@BlankLine IndentedLine
def _NonblankIndentedLine
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_IndentedLine)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_NonblankIndentedLine unless _tmp
return _tmp
end
# VerbatimChunk = @BlankLine*:a NonblankIndentedLine+:b { a.concat b }
def _VerbatimChunk
_save = self.pos
while true # sequence
_ary = []
while true
_tmp = _BlankLine()
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
a = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_ary = []
_tmp = apply(:_NonblankIndentedLine)
if _tmp
_ary << @result
while true
_tmp = apply(:_NonblankIndentedLine)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save2
end
b = @result
unless _tmp
self.pos = _save
break
end
@result = begin; a.concat b ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_VerbatimChunk unless _tmp
return _tmp
end
# Verbatim = VerbatimChunk+:a { RDoc::Markup::Verbatim.new(*a.flatten) }
def _Verbatim
_save = self.pos
while true # sequence
_save1 = self.pos
_ary = []
_tmp = apply(:_VerbatimChunk)
if _tmp
_ary << @result
while true
_tmp = apply(:_VerbatimChunk)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save1
end
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::Verbatim.new(*a.flatten) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Verbatim unless _tmp
return _tmp
end
# HorizontalRule = @NonindentSpace ("*" @Sp "*" @Sp "*" (@Sp "*")* | "-" @Sp "-" @Sp "-" (@Sp "-")* | "_" @Sp "_" @Sp "_" (@Sp "_")*) @Sp @Newline @BlankLine+ { RDoc::Markup::Rule.new 1 }
def _HorizontalRule
_save = self.pos
while true # sequence
_tmp = _NonindentSpace()
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_save2 = self.pos
while true # sequence
_tmp = match_string("*")
unless _tmp
self.pos = _save2
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save2
break
end
_tmp = match_string("*")
unless _tmp
self.pos = _save2
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save2
break
end
_tmp = match_string("*")
unless _tmp
self.pos = _save2
break
end
while true
_save4 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save4
break
end
_tmp = match_string("*")
unless _tmp
self.pos = _save4
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
break if _tmp
self.pos = _save1
_save5 = self.pos
while true # sequence
_tmp = match_string("-")
unless _tmp
self.pos = _save5
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save5
break
end
_tmp = match_string("-")
unless _tmp
self.pos = _save5
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save5
break
end
_tmp = match_string("-")
unless _tmp
self.pos = _save5
break
end
while true
_save7 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save7
break
end
_tmp = match_string("-")
unless _tmp
self.pos = _save7
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save5
end
break
end # end sequence
break if _tmp
self.pos = _save1
_save8 = self.pos
while true # sequence
_tmp = match_string("_")
unless _tmp
self.pos = _save8
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save8
break
end
_tmp = match_string("_")
unless _tmp
self.pos = _save8
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save8
break
end
_tmp = match_string("_")
unless _tmp
self.pos = _save8
break
end
while true
_save10 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save10
break
end
_tmp = match_string("_")
unless _tmp
self.pos = _save10
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save8
end
break
end # end sequence
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
_save11 = self.pos
_tmp = _BlankLine()
if _tmp
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
else
self.pos = _save11
end
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::Rule.new 1 ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HorizontalRule unless _tmp
return _tmp
end
# Bullet = !HorizontalRule @NonindentSpace /[+*-]/ @Spacechar+
def _Bullet
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = apply(:_HorizontalRule)
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = _NonindentSpace()
unless _tmp
self.pos = _save
break
end
_tmp = scan(/\G(?-mix:[+*-])/)
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_tmp = _Spacechar()
if _tmp
while true
_tmp = _Spacechar()
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Bullet unless _tmp
return _tmp
end
# BulletList = &Bullet (ListTight | ListLoose):a { RDoc::Markup::List.new(:BULLET, *a) }
def _BulletList
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = apply(:_Bullet)
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
while true # choice
_tmp = apply(:_ListTight)
break if _tmp
self.pos = _save2
_tmp = apply(:_ListLoose)
break if _tmp
self.pos = _save2
break
end # end choice
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::List.new(:BULLET, *a) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_BulletList unless _tmp
return _tmp
end
# ListTight = ListItemTight+:a @BlankLine* !(Bullet | Enumerator) { a }
def _ListTight
_save = self.pos
while true # sequence
_save1 = self.pos
_ary = []
_tmp = apply(:_ListItemTight)
if _tmp
_ary << @result
while true
_tmp = apply(:_ListItemTight)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save1
end
a = @result
unless _tmp
self.pos = _save
break
end
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_save3 = self.pos
_save4 = self.pos
while true # choice
_tmp = apply(:_Bullet)
break if _tmp
self.pos = _save4
_tmp = apply(:_Enumerator)
break if _tmp
self.pos = _save4
break
end # end choice
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ListTight unless _tmp
return _tmp
end
# ListLoose = @StartList:a (ListItem:b @BlankLine* { a << b })+ { a }
def _ListLoose
_save = self.pos
while true # sequence
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_save2 = self.pos
while true # sequence
_tmp = apply(:_ListItem)
b = @result
unless _tmp
self.pos = _save2
break
end
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save2
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
if _tmp
while true
_save4 = self.pos
while true # sequence
_tmp = apply(:_ListItem)
b = @result
unless _tmp
self.pos = _save4
break
end
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save4
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save4
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ListLoose unless _tmp
return _tmp
end
# ListItem = (Bullet | Enumerator) @StartList:a ListBlock:b { a << b } (ListContinuationBlock:c { a.push(*c) })* { list_item_from a }
def _ListItem
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_tmp = apply(:_Bullet)
break if _tmp
self.pos = _save1
_tmp = apply(:_Enumerator)
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_ListBlock)
b = @result
unless _tmp
self.pos = _save
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save
break
end
while true
_save3 = self.pos
while true # sequence
_tmp = apply(:_ListContinuationBlock)
c = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; a.push(*c) ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
@result = begin; list_item_from a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ListItem unless _tmp
return _tmp
end
# ListItemTight = (Bullet | Enumerator) ListBlock:a (!@BlankLine ListContinuationBlock:b { a.push(*b) })* !ListContinuationBlock { list_item_from a }
def _ListItemTight
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_tmp = apply(:_Bullet)
break if _tmp
self.pos = _save1
_tmp = apply(:_Enumerator)
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_ListBlock)
a = @result
unless _tmp
self.pos = _save
break
end
while true
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_ListContinuationBlock)
b = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; a.push(*b) ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_save5 = self.pos
_tmp = apply(:_ListContinuationBlock)
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save
break
end
@result = begin; list_item_from a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ListItemTight unless _tmp
return _tmp
end
# ListBlock = !@BlankLine Line:a ListBlockLine*:c { [a, *c] }
def _ListBlock
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Line)
a = @result
unless _tmp
self.pos = _save
break
end
_ary = []
while true
_tmp = apply(:_ListBlockLine)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
c = @result
unless _tmp
self.pos = _save
break
end
@result = begin; [a, *c] ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ListBlock unless _tmp
return _tmp
end
# ListContinuationBlock = @StartList:a @BlankLine* { a << "\n" } (Indent ListBlock:b { a.concat b })+ { a }
def _ListContinuationBlock
_save = self.pos
while true # sequence
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
@result = begin; a << "\n" ; end
_tmp = true
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # sequence
_tmp = apply(:_Indent)
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_ListBlock)
b = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; a.concat b ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
while true
_save4 = self.pos
while true # sequence
_tmp = apply(:_Indent)
unless _tmp
self.pos = _save4
break
end
_tmp = apply(:_ListBlock)
b = @result
unless _tmp
self.pos = _save4
break
end
@result = begin; a.concat b ; end
_tmp = true
unless _tmp
self.pos = _save4
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ListContinuationBlock unless _tmp
return _tmp
end
# Enumerator = @NonindentSpace [0-9]+ "." @Spacechar+
def _Enumerator
_save = self.pos
while true # sequence
_tmp = _NonindentSpace()
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_save2 = self.pos
_tmp = get_byte
if _tmp
unless _tmp >= 48 and _tmp <= 57
self.pos = _save2
_tmp = nil
end
end
if _tmp
while true
_save3 = self.pos
_tmp = get_byte
if _tmp
unless _tmp >= 48 and _tmp <= 57
self.pos = _save3
_tmp = nil
end
end
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string(".")
unless _tmp
self.pos = _save
break
end
_save4 = self.pos
_tmp = _Spacechar()
if _tmp
while true
_tmp = _Spacechar()
break unless _tmp
end
_tmp = true
else
self.pos = _save4
end
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Enumerator unless _tmp
return _tmp
end
# OrderedList = &Enumerator (ListTight | ListLoose):a { RDoc::Markup::List.new(:NUMBER, *a) }
def _OrderedList
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = apply(:_Enumerator)
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
while true # choice
_tmp = apply(:_ListTight)
break if _tmp
self.pos = _save2
_tmp = apply(:_ListLoose)
break if _tmp
self.pos = _save2
break
end # end choice
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::List.new(:NUMBER, *a) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_OrderedList unless _tmp
return _tmp
end
# ListBlockLine = !@BlankLine !(Indent? (Bullet | Enumerator)) !HorizontalRule OptionallyIndentedLine
def _ListBlockLine
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_Indent)
unless _tmp
_tmp = true
self.pos = _save4
end
unless _tmp
self.pos = _save3
break
end
_save5 = self.pos
while true # choice
_tmp = apply(:_Bullet)
break if _tmp
self.pos = _save5
_tmp = apply(:_Enumerator)
break if _tmp
self.pos = _save5
break
end # end choice
unless _tmp
self.pos = _save3
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save2
unless _tmp
self.pos = _save
break
end
_save6 = self.pos
_tmp = apply(:_HorizontalRule)
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_OptionallyIndentedLine)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ListBlockLine unless _tmp
return _tmp
end
# HtmlOpenAnchor = "<" Spnl ("a" | "A") Spnl HtmlAttribute* ">"
def _HtmlOpenAnchor
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("a")
break if _tmp
self.pos = _save1
_tmp = match_string("A")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlOpenAnchor unless _tmp
return _tmp
end
# HtmlCloseAnchor = "<" Spnl "/" ("a" | "A") Spnl ">"
def _HtmlCloseAnchor
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("a")
break if _tmp
self.pos = _save1
_tmp = match_string("A")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlCloseAnchor unless _tmp
return _tmp
end
# HtmlAnchor = HtmlOpenAnchor (HtmlAnchor | !HtmlCloseAnchor .)* HtmlCloseAnchor
def _HtmlAnchor
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlOpenAnchor)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlAnchor)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlCloseAnchor)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlCloseAnchor)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlAnchor unless _tmp
return _tmp
end
# HtmlBlockOpenAddress = "<" Spnl ("address" | "ADDRESS") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenAddress
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("address")
break if _tmp
self.pos = _save1
_tmp = match_string("ADDRESS")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenAddress unless _tmp
return _tmp
end
# HtmlBlockCloseAddress = "<" Spnl "/" ("address" | "ADDRESS") Spnl ">"
def _HtmlBlockCloseAddress
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("address")
break if _tmp
self.pos = _save1
_tmp = match_string("ADDRESS")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseAddress unless _tmp
return _tmp
end
# HtmlBlockAddress = HtmlBlockOpenAddress (HtmlBlockAddress | !HtmlBlockCloseAddress .)* HtmlBlockCloseAddress
def _HtmlBlockAddress
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenAddress)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockAddress)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseAddress)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseAddress)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockAddress unless _tmp
return _tmp
end
# HtmlBlockOpenBlockquote = "<" Spnl ("blockquote" | "BLOCKQUOTE") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenBlockquote
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("blockquote")
break if _tmp
self.pos = _save1
_tmp = match_string("BLOCKQUOTE")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenBlockquote unless _tmp
return _tmp
end
# HtmlBlockCloseBlockquote = "<" Spnl "/" ("blockquote" | "BLOCKQUOTE") Spnl ">"
def _HtmlBlockCloseBlockquote
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("blockquote")
break if _tmp
self.pos = _save1
_tmp = match_string("BLOCKQUOTE")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseBlockquote unless _tmp
return _tmp
end
# HtmlBlockBlockquote = HtmlBlockOpenBlockquote (HtmlBlockBlockquote | !HtmlBlockCloseBlockquote .)* HtmlBlockCloseBlockquote
def _HtmlBlockBlockquote
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenBlockquote)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockBlockquote)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseBlockquote)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseBlockquote)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockBlockquote unless _tmp
return _tmp
end
# HtmlBlockOpenCenter = "<" Spnl ("center" | "CENTER") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenCenter
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("center")
break if _tmp
self.pos = _save1
_tmp = match_string("CENTER")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenCenter unless _tmp
return _tmp
end
# HtmlBlockCloseCenter = "<" Spnl "/" ("center" | "CENTER") Spnl ">"
def _HtmlBlockCloseCenter
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("center")
break if _tmp
self.pos = _save1
_tmp = match_string("CENTER")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseCenter unless _tmp
return _tmp
end
# HtmlBlockCenter = HtmlBlockOpenCenter (HtmlBlockCenter | !HtmlBlockCloseCenter .)* HtmlBlockCloseCenter
def _HtmlBlockCenter
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenCenter)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockCenter)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseCenter)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseCenter)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCenter unless _tmp
return _tmp
end
# HtmlBlockOpenDir = "<" Spnl ("dir" | "DIR") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenDir
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("dir")
break if _tmp
self.pos = _save1
_tmp = match_string("DIR")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenDir unless _tmp
return _tmp
end
# HtmlBlockCloseDir = "<" Spnl "/" ("dir" | "DIR") Spnl ">"
def _HtmlBlockCloseDir
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("dir")
break if _tmp
self.pos = _save1
_tmp = match_string("DIR")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseDir unless _tmp
return _tmp
end
# HtmlBlockDir = HtmlBlockOpenDir (HtmlBlockDir | !HtmlBlockCloseDir .)* HtmlBlockCloseDir
def _HtmlBlockDir
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenDir)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockDir)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseDir)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseDir)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockDir unless _tmp
return _tmp
end
# HtmlBlockOpenDiv = "<" Spnl ("div" | "DIV") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenDiv
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("div")
break if _tmp
self.pos = _save1
_tmp = match_string("DIV")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenDiv unless _tmp
return _tmp
end
# HtmlBlockCloseDiv = "<" Spnl "/" ("div" | "DIV") Spnl ">"
def _HtmlBlockCloseDiv
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("div")
break if _tmp
self.pos = _save1
_tmp = match_string("DIV")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseDiv unless _tmp
return _tmp
end
# HtmlBlockDiv = HtmlBlockOpenDiv (HtmlBlockDiv | !HtmlBlockCloseDiv .)* HtmlBlockCloseDiv
def _HtmlBlockDiv
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenDiv)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockDiv)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseDiv)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseDiv)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockDiv unless _tmp
return _tmp
end
# HtmlBlockOpenDl = "<" Spnl ("dl" | "DL") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenDl
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("dl")
break if _tmp
self.pos = _save1
_tmp = match_string("DL")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenDl unless _tmp
return _tmp
end
# HtmlBlockCloseDl = "<" Spnl "/" ("dl" | "DL") Spnl ">"
def _HtmlBlockCloseDl
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("dl")
break if _tmp
self.pos = _save1
_tmp = match_string("DL")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseDl unless _tmp
return _tmp
end
# HtmlBlockDl = HtmlBlockOpenDl (HtmlBlockDl | !HtmlBlockCloseDl .)* HtmlBlockCloseDl
def _HtmlBlockDl
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenDl)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockDl)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseDl)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseDl)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockDl unless _tmp
return _tmp
end
# HtmlBlockOpenFieldset = "<" Spnl ("fieldset" | "FIELDSET") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenFieldset
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("fieldset")
break if _tmp
self.pos = _save1
_tmp = match_string("FIELDSET")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenFieldset unless _tmp
return _tmp
end
# HtmlBlockCloseFieldset = "<" Spnl "/" ("fieldset" | "FIELDSET") Spnl ">"
def _HtmlBlockCloseFieldset
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("fieldset")
break if _tmp
self.pos = _save1
_tmp = match_string("FIELDSET")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseFieldset unless _tmp
return _tmp
end
# HtmlBlockFieldset = HtmlBlockOpenFieldset (HtmlBlockFieldset | !HtmlBlockCloseFieldset .)* HtmlBlockCloseFieldset
def _HtmlBlockFieldset
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenFieldset)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockFieldset)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseFieldset)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseFieldset)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockFieldset unless _tmp
return _tmp
end
# HtmlBlockOpenForm = "<" Spnl ("form" | "FORM") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenForm
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("form")
break if _tmp
self.pos = _save1
_tmp = match_string("FORM")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenForm unless _tmp
return _tmp
end
# HtmlBlockCloseForm = "<" Spnl "/" ("form" | "FORM") Spnl ">"
def _HtmlBlockCloseForm
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("form")
break if _tmp
self.pos = _save1
_tmp = match_string("FORM")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseForm unless _tmp
return _tmp
end
# HtmlBlockForm = HtmlBlockOpenForm (HtmlBlockForm | !HtmlBlockCloseForm .)* HtmlBlockCloseForm
def _HtmlBlockForm
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenForm)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockForm)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseForm)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseForm)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockForm unless _tmp
return _tmp
end
# HtmlBlockOpenH1 = "<" Spnl ("h1" | "H1") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenH1
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h1")
break if _tmp
self.pos = _save1
_tmp = match_string("H1")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenH1 unless _tmp
return _tmp
end
# HtmlBlockCloseH1 = "<" Spnl "/" ("h1" | "H1") Spnl ">"
def _HtmlBlockCloseH1
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h1")
break if _tmp
self.pos = _save1
_tmp = match_string("H1")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseH1 unless _tmp
return _tmp
end
# HtmlBlockH1 = HtmlBlockOpenH1 (HtmlBlockH1 | !HtmlBlockCloseH1 .)* HtmlBlockCloseH1
def _HtmlBlockH1
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenH1)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockH1)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseH1)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseH1)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockH1 unless _tmp
return _tmp
end
# HtmlBlockOpenH2 = "<" Spnl ("h2" | "H2") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenH2
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h2")
break if _tmp
self.pos = _save1
_tmp = match_string("H2")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenH2 unless _tmp
return _tmp
end
# HtmlBlockCloseH2 = "<" Spnl "/" ("h2" | "H2") Spnl ">"
def _HtmlBlockCloseH2
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h2")
break if _tmp
self.pos = _save1
_tmp = match_string("H2")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseH2 unless _tmp
return _tmp
end
# HtmlBlockH2 = HtmlBlockOpenH2 (HtmlBlockH2 | !HtmlBlockCloseH2 .)* HtmlBlockCloseH2
def _HtmlBlockH2
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenH2)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockH2)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseH2)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseH2)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockH2 unless _tmp
return _tmp
end
# HtmlBlockOpenH3 = "<" Spnl ("h3" | "H3") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenH3
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h3")
break if _tmp
self.pos = _save1
_tmp = match_string("H3")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenH3 unless _tmp
return _tmp
end
# HtmlBlockCloseH3 = "<" Spnl "/" ("h3" | "H3") Spnl ">"
def _HtmlBlockCloseH3
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h3")
break if _tmp
self.pos = _save1
_tmp = match_string("H3")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseH3 unless _tmp
return _tmp
end
# HtmlBlockH3 = HtmlBlockOpenH3 (HtmlBlockH3 | !HtmlBlockCloseH3 .)* HtmlBlockCloseH3
def _HtmlBlockH3
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenH3)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockH3)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseH3)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseH3)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockH3 unless _tmp
return _tmp
end
# HtmlBlockOpenH4 = "<" Spnl ("h4" | "H4") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenH4
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h4")
break if _tmp
self.pos = _save1
_tmp = match_string("H4")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenH4 unless _tmp
return _tmp
end
# HtmlBlockCloseH4 = "<" Spnl "/" ("h4" | "H4") Spnl ">"
def _HtmlBlockCloseH4
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h4")
break if _tmp
self.pos = _save1
_tmp = match_string("H4")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseH4 unless _tmp
return _tmp
end
# HtmlBlockH4 = HtmlBlockOpenH4 (HtmlBlockH4 | !HtmlBlockCloseH4 .)* HtmlBlockCloseH4
def _HtmlBlockH4
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenH4)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockH4)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseH4)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseH4)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockH4 unless _tmp
return _tmp
end
# HtmlBlockOpenH5 = "<" Spnl ("h5" | "H5") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenH5
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h5")
break if _tmp
self.pos = _save1
_tmp = match_string("H5")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenH5 unless _tmp
return _tmp
end
# HtmlBlockCloseH5 = "<" Spnl "/" ("h5" | "H5") Spnl ">"
def _HtmlBlockCloseH5
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h5")
break if _tmp
self.pos = _save1
_tmp = match_string("H5")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseH5 unless _tmp
return _tmp
end
# HtmlBlockH5 = HtmlBlockOpenH5 (HtmlBlockH5 | !HtmlBlockCloseH5 .)* HtmlBlockCloseH5
def _HtmlBlockH5
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenH5)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockH5)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseH5)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseH5)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockH5 unless _tmp
return _tmp
end
# HtmlBlockOpenH6 = "<" Spnl ("h6" | "H6") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenH6
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h6")
break if _tmp
self.pos = _save1
_tmp = match_string("H6")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenH6 unless _tmp
return _tmp
end
# HtmlBlockCloseH6 = "<" Spnl "/" ("h6" | "H6") Spnl ">"
def _HtmlBlockCloseH6
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("h6")
break if _tmp
self.pos = _save1
_tmp = match_string("H6")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseH6 unless _tmp
return _tmp
end
# HtmlBlockH6 = HtmlBlockOpenH6 (HtmlBlockH6 | !HtmlBlockCloseH6 .)* HtmlBlockCloseH6
def _HtmlBlockH6
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenH6)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockH6)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseH6)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseH6)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockH6 unless _tmp
return _tmp
end
# HtmlBlockOpenMenu = "<" Spnl ("menu" | "MENU") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenMenu
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("menu")
break if _tmp
self.pos = _save1
_tmp = match_string("MENU")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenMenu unless _tmp
return _tmp
end
# HtmlBlockCloseMenu = "<" Spnl "/" ("menu" | "MENU") Spnl ">"
def _HtmlBlockCloseMenu
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("menu")
break if _tmp
self.pos = _save1
_tmp = match_string("MENU")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseMenu unless _tmp
return _tmp
end
# HtmlBlockMenu = HtmlBlockOpenMenu (HtmlBlockMenu | !HtmlBlockCloseMenu .)* HtmlBlockCloseMenu
def _HtmlBlockMenu
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenMenu)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockMenu)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseMenu)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseMenu)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockMenu unless _tmp
return _tmp
end
# HtmlBlockOpenNoframes = "<" Spnl ("noframes" | "NOFRAMES") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenNoframes
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("noframes")
break if _tmp
self.pos = _save1
_tmp = match_string("NOFRAMES")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenNoframes unless _tmp
return _tmp
end
# HtmlBlockCloseNoframes = "<" Spnl "/" ("noframes" | "NOFRAMES") Spnl ">"
def _HtmlBlockCloseNoframes
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("noframes")
break if _tmp
self.pos = _save1
_tmp = match_string("NOFRAMES")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseNoframes unless _tmp
return _tmp
end
# HtmlBlockNoframes = HtmlBlockOpenNoframes (HtmlBlockNoframes | !HtmlBlockCloseNoframes .)* HtmlBlockCloseNoframes
def _HtmlBlockNoframes
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenNoframes)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockNoframes)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseNoframes)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseNoframes)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockNoframes unless _tmp
return _tmp
end
# HtmlBlockOpenNoscript = "<" Spnl ("noscript" | "NOSCRIPT") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenNoscript
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("noscript")
break if _tmp
self.pos = _save1
_tmp = match_string("NOSCRIPT")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenNoscript unless _tmp
return _tmp
end
# HtmlBlockCloseNoscript = "<" Spnl "/" ("noscript" | "NOSCRIPT") Spnl ">"
def _HtmlBlockCloseNoscript
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("noscript")
break if _tmp
self.pos = _save1
_tmp = match_string("NOSCRIPT")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseNoscript unless _tmp
return _tmp
end
# HtmlBlockNoscript = HtmlBlockOpenNoscript (HtmlBlockNoscript | !HtmlBlockCloseNoscript .)* HtmlBlockCloseNoscript
def _HtmlBlockNoscript
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenNoscript)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockNoscript)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseNoscript)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseNoscript)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockNoscript unless _tmp
return _tmp
end
# HtmlBlockOpenOl = "<" Spnl ("ol" | "OL") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenOl
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("ol")
break if _tmp
self.pos = _save1
_tmp = match_string("OL")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenOl unless _tmp
return _tmp
end
# HtmlBlockCloseOl = "<" Spnl "/" ("ol" | "OL") Spnl ">"
def _HtmlBlockCloseOl
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("ol")
break if _tmp
self.pos = _save1
_tmp = match_string("OL")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseOl unless _tmp
return _tmp
end
# HtmlBlockOl = HtmlBlockOpenOl (HtmlBlockOl | !HtmlBlockCloseOl .)* HtmlBlockCloseOl
def _HtmlBlockOl
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenOl)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockOl)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseOl)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseOl)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOl unless _tmp
return _tmp
end
# HtmlBlockOpenP = "<" Spnl ("p" | "P") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenP
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("p")
break if _tmp
self.pos = _save1
_tmp = match_string("P")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenP unless _tmp
return _tmp
end
# HtmlBlockCloseP = "<" Spnl "/" ("p" | "P") Spnl ">"
def _HtmlBlockCloseP
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("p")
break if _tmp
self.pos = _save1
_tmp = match_string("P")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseP unless _tmp
return _tmp
end
# HtmlBlockP = HtmlBlockOpenP (HtmlBlockP | !HtmlBlockCloseP .)* HtmlBlockCloseP
def _HtmlBlockP
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenP)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockP)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseP)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseP)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockP unless _tmp
return _tmp
end
# HtmlBlockOpenPre = "<" Spnl ("pre" | "PRE") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenPre
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("pre")
break if _tmp
self.pos = _save1
_tmp = match_string("PRE")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenPre unless _tmp
return _tmp
end
# HtmlBlockClosePre = "<" Spnl "/" ("pre" | "PRE") Spnl ">"
def _HtmlBlockClosePre
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("pre")
break if _tmp
self.pos = _save1
_tmp = match_string("PRE")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockClosePre unless _tmp
return _tmp
end
# HtmlBlockPre = HtmlBlockOpenPre (HtmlBlockPre | !HtmlBlockClosePre .)* HtmlBlockClosePre
def _HtmlBlockPre
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenPre)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockPre)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockClosePre)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockClosePre)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockPre unless _tmp
return _tmp
end
# HtmlBlockOpenTable = "<" Spnl ("table" | "TABLE") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenTable
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("table")
break if _tmp
self.pos = _save1
_tmp = match_string("TABLE")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenTable unless _tmp
return _tmp
end
# HtmlBlockCloseTable = "<" Spnl "/" ("table" | "TABLE") Spnl ">"
def _HtmlBlockCloseTable
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("table")
break if _tmp
self.pos = _save1
_tmp = match_string("TABLE")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseTable unless _tmp
return _tmp
end
# HtmlBlockTable = HtmlBlockOpenTable (HtmlBlockTable | !HtmlBlockCloseTable .)* HtmlBlockCloseTable
def _HtmlBlockTable
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenTable)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockTable)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseTable)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseTable)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockTable unless _tmp
return _tmp
end
# HtmlBlockOpenUl = "<" Spnl ("ul" | "UL") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenUl
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("ul")
break if _tmp
self.pos = _save1
_tmp = match_string("UL")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenUl unless _tmp
return _tmp
end
# HtmlBlockCloseUl = "<" Spnl "/" ("ul" | "UL") Spnl ">"
def _HtmlBlockCloseUl
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("ul")
break if _tmp
self.pos = _save1
_tmp = match_string("UL")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseUl unless _tmp
return _tmp
end
# HtmlBlockUl = HtmlBlockOpenUl (HtmlBlockUl | !HtmlBlockCloseUl .)* HtmlBlockCloseUl
def _HtmlBlockUl
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenUl)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockUl)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseUl)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseUl)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockUl unless _tmp
return _tmp
end
# HtmlBlockOpenDd = "<" Spnl ("dd" | "DD") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenDd
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("dd")
break if _tmp
self.pos = _save1
_tmp = match_string("DD")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenDd unless _tmp
return _tmp
end
# HtmlBlockCloseDd = "<" Spnl "/" ("dd" | "DD") Spnl ">"
def _HtmlBlockCloseDd
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("dd")
break if _tmp
self.pos = _save1
_tmp = match_string("DD")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseDd unless _tmp
return _tmp
end
# HtmlBlockDd = HtmlBlockOpenDd (HtmlBlockDd | !HtmlBlockCloseDd .)* HtmlBlockCloseDd
def _HtmlBlockDd
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenDd)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockDd)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseDd)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseDd)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockDd unless _tmp
return _tmp
end
# HtmlBlockOpenDt = "<" Spnl ("dt" | "DT") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenDt
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("dt")
break if _tmp
self.pos = _save1
_tmp = match_string("DT")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenDt unless _tmp
return _tmp
end
# HtmlBlockCloseDt = "<" Spnl "/" ("dt" | "DT") Spnl ">"
def _HtmlBlockCloseDt
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("dt")
break if _tmp
self.pos = _save1
_tmp = match_string("DT")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseDt unless _tmp
return _tmp
end
# HtmlBlockDt = HtmlBlockOpenDt (HtmlBlockDt | !HtmlBlockCloseDt .)* HtmlBlockCloseDt
def _HtmlBlockDt
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenDt)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockDt)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseDt)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseDt)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockDt unless _tmp
return _tmp
end
# HtmlBlockOpenFrameset = "<" Spnl ("frameset" | "FRAMESET") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenFrameset
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("frameset")
break if _tmp
self.pos = _save1
_tmp = match_string("FRAMESET")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenFrameset unless _tmp
return _tmp
end
# HtmlBlockCloseFrameset = "<" Spnl "/" ("frameset" | "FRAMESET") Spnl ">"
def _HtmlBlockCloseFrameset
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("frameset")
break if _tmp
self.pos = _save1
_tmp = match_string("FRAMESET")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseFrameset unless _tmp
return _tmp
end
# HtmlBlockFrameset = HtmlBlockOpenFrameset (HtmlBlockFrameset | !HtmlBlockCloseFrameset .)* HtmlBlockCloseFrameset
def _HtmlBlockFrameset
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenFrameset)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockFrameset)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseFrameset)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseFrameset)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockFrameset unless _tmp
return _tmp
end
# HtmlBlockOpenLi = "<" Spnl ("li" | "LI") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenLi
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("li")
break if _tmp
self.pos = _save1
_tmp = match_string("LI")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenLi unless _tmp
return _tmp
end
# HtmlBlockCloseLi = "<" Spnl "/" ("li" | "LI") Spnl ">"
def _HtmlBlockCloseLi
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("li")
break if _tmp
self.pos = _save1
_tmp = match_string("LI")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseLi unless _tmp
return _tmp
end
# HtmlBlockLi = HtmlBlockOpenLi (HtmlBlockLi | !HtmlBlockCloseLi .)* HtmlBlockCloseLi
def _HtmlBlockLi
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenLi)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockLi)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseLi)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseLi)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockLi unless _tmp
return _tmp
end
# HtmlBlockOpenTbody = "<" Spnl ("tbody" | "TBODY") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenTbody
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("tbody")
break if _tmp
self.pos = _save1
_tmp = match_string("TBODY")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenTbody unless _tmp
return _tmp
end
# HtmlBlockCloseTbody = "<" Spnl "/" ("tbody" | "TBODY") Spnl ">"
def _HtmlBlockCloseTbody
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("tbody")
break if _tmp
self.pos = _save1
_tmp = match_string("TBODY")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseTbody unless _tmp
return _tmp
end
# HtmlBlockTbody = HtmlBlockOpenTbody (HtmlBlockTbody | !HtmlBlockCloseTbody .)* HtmlBlockCloseTbody
def _HtmlBlockTbody
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenTbody)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockTbody)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseTbody)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseTbody)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockTbody unless _tmp
return _tmp
end
# HtmlBlockOpenTd = "<" Spnl ("td" | "TD") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenTd
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("td")
break if _tmp
self.pos = _save1
_tmp = match_string("TD")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenTd unless _tmp
return _tmp
end
# HtmlBlockCloseTd = "<" Spnl "/" ("td" | "TD") Spnl ">"
def _HtmlBlockCloseTd
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("td")
break if _tmp
self.pos = _save1
_tmp = match_string("TD")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseTd unless _tmp
return _tmp
end
# HtmlBlockTd = HtmlBlockOpenTd (HtmlBlockTd | !HtmlBlockCloseTd .)* HtmlBlockCloseTd
def _HtmlBlockTd
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenTd)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockTd)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseTd)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseTd)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockTd unless _tmp
return _tmp
end
# HtmlBlockOpenTfoot = "<" Spnl ("tfoot" | "TFOOT") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenTfoot
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("tfoot")
break if _tmp
self.pos = _save1
_tmp = match_string("TFOOT")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenTfoot unless _tmp
return _tmp
end
# HtmlBlockCloseTfoot = "<" Spnl "/" ("tfoot" | "TFOOT") Spnl ">"
def _HtmlBlockCloseTfoot
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("tfoot")
break if _tmp
self.pos = _save1
_tmp = match_string("TFOOT")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseTfoot unless _tmp
return _tmp
end
# HtmlBlockTfoot = HtmlBlockOpenTfoot (HtmlBlockTfoot | !HtmlBlockCloseTfoot .)* HtmlBlockCloseTfoot
def _HtmlBlockTfoot
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenTfoot)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockTfoot)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseTfoot)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseTfoot)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockTfoot unless _tmp
return _tmp
end
# HtmlBlockOpenTh = "<" Spnl ("th" | "TH") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenTh
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("th")
break if _tmp
self.pos = _save1
_tmp = match_string("TH")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenTh unless _tmp
return _tmp
end
# HtmlBlockCloseTh = "<" Spnl "/" ("th" | "TH") Spnl ">"
def _HtmlBlockCloseTh
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("th")
break if _tmp
self.pos = _save1
_tmp = match_string("TH")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseTh unless _tmp
return _tmp
end
# HtmlBlockTh = HtmlBlockOpenTh (HtmlBlockTh | !HtmlBlockCloseTh .)* HtmlBlockCloseTh
def _HtmlBlockTh
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenTh)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockTh)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseTh)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseTh)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockTh unless _tmp
return _tmp
end
# HtmlBlockOpenThead = "<" Spnl ("thead" | "THEAD") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenThead
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("thead")
break if _tmp
self.pos = _save1
_tmp = match_string("THEAD")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenThead unless _tmp
return _tmp
end
# HtmlBlockCloseThead = "<" Spnl "/" ("thead" | "THEAD") Spnl ">"
def _HtmlBlockCloseThead
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("thead")
break if _tmp
self.pos = _save1
_tmp = match_string("THEAD")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseThead unless _tmp
return _tmp
end
# HtmlBlockThead = HtmlBlockOpenThead (HtmlBlockThead | !HtmlBlockCloseThead .)* HtmlBlockCloseThead
def _HtmlBlockThead
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenThead)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockThead)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseThead)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseThead)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockThead unless _tmp
return _tmp
end
# HtmlBlockOpenTr = "<" Spnl ("tr" | "TR") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenTr
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("tr")
break if _tmp
self.pos = _save1
_tmp = match_string("TR")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenTr unless _tmp
return _tmp
end
# HtmlBlockCloseTr = "<" Spnl "/" ("tr" | "TR") Spnl ">"
def _HtmlBlockCloseTr
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("tr")
break if _tmp
self.pos = _save1
_tmp = match_string("TR")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseTr unless _tmp
return _tmp
end
# HtmlBlockTr = HtmlBlockOpenTr (HtmlBlockTr | !HtmlBlockCloseTr .)* HtmlBlockCloseTr
def _HtmlBlockTr
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenTr)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockTr)
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_HtmlBlockCloseTr)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseTr)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockTr unless _tmp
return _tmp
end
# HtmlBlockOpenScript = "<" Spnl ("script" | "SCRIPT") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenScript
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("script")
break if _tmp
self.pos = _save1
_tmp = match_string("SCRIPT")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenScript unless _tmp
return _tmp
end
# HtmlBlockCloseScript = "<" Spnl "/" ("script" | "SCRIPT") Spnl ">"
def _HtmlBlockCloseScript
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("script")
break if _tmp
self.pos = _save1
_tmp = match_string("SCRIPT")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseScript unless _tmp
return _tmp
end
# HtmlBlockScript = HtmlBlockOpenScript (!HtmlBlockCloseScript .)* HtmlBlockCloseScript
def _HtmlBlockScript
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenScript)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_tmp = apply(:_HtmlBlockCloseScript)
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseScript)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockScript unless _tmp
return _tmp
end
# HtmlBlockOpenHead = "<" Spnl ("head" | "HEAD") Spnl HtmlAttribute* ">"
def _HtmlBlockOpenHead
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("head")
break if _tmp
self.pos = _save1
_tmp = match_string("HEAD")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockOpenHead unless _tmp
return _tmp
end
# HtmlBlockCloseHead = "<" Spnl "/" ("head" | "HEAD") Spnl ">"
def _HtmlBlockCloseHead
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("head")
break if _tmp
self.pos = _save1
_tmp = match_string("HEAD")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockCloseHead unless _tmp
return _tmp
end
# HtmlBlockHead = HtmlBlockOpenHead (!HtmlBlockCloseHead .)* HtmlBlockCloseHead
def _HtmlBlockHead
_save = self.pos
while true # sequence
_tmp = apply(:_HtmlBlockOpenHead)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_tmp = apply(:_HtmlBlockCloseHead)
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockCloseHead)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockHead unless _tmp
return _tmp
end
# HtmlBlockInTags = (HtmlAnchor | HtmlBlockAddress | HtmlBlockBlockquote | HtmlBlockCenter | HtmlBlockDir | HtmlBlockDiv | HtmlBlockDl | HtmlBlockFieldset | HtmlBlockForm | HtmlBlockH1 | HtmlBlockH2 | HtmlBlockH3 | HtmlBlockH4 | HtmlBlockH5 | HtmlBlockH6 | HtmlBlockMenu | HtmlBlockNoframes | HtmlBlockNoscript | HtmlBlockOl | HtmlBlockP | HtmlBlockPre | HtmlBlockTable | HtmlBlockUl | HtmlBlockDd | HtmlBlockDt | HtmlBlockFrameset | HtmlBlockLi | HtmlBlockTbody | HtmlBlockTd | HtmlBlockTfoot | HtmlBlockTh | HtmlBlockThead | HtmlBlockTr | HtmlBlockScript | HtmlBlockHead)
def _HtmlBlockInTags
_save = self.pos
while true # choice
_tmp = apply(:_HtmlAnchor)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockAddress)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockBlockquote)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockCenter)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockDir)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockDiv)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockDl)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockFieldset)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockForm)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockH1)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockH2)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockH3)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockH4)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockH5)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockH6)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockMenu)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockNoframes)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockNoscript)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockOl)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockP)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockPre)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockTable)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockUl)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockDd)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockDt)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockFrameset)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockLi)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockTbody)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockTd)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockTfoot)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockTh)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockThead)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockTr)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockScript)
break if _tmp
self.pos = _save
_tmp = apply(:_HtmlBlockHead)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_HtmlBlockInTags unless _tmp
return _tmp
end
# HtmlBlock = < (HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) > @BlankLine+ { if html? then RDoc::Markup::Raw.new text end }
def _HtmlBlock
_save = self.pos
while true # sequence
_text_start = self.pos
_save1 = self.pos
while true # choice
_tmp = apply(:_HtmlBlockInTags)
break if _tmp
self.pos = _save1
_tmp = apply(:_HtmlComment)
break if _tmp
self.pos = _save1
_tmp = apply(:_HtmlBlockSelfClosing)
break if _tmp
self.pos = _save1
_tmp = apply(:_HtmlUnclosed)
break if _tmp
self.pos = _save1
break
end # end choice
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_tmp = _BlankLine()
if _tmp
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
@result = begin; if html? then
RDoc::Markup::Raw.new text
end ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlock unless _tmp
return _tmp
end
# HtmlUnclosed = "<" Spnl HtmlUnclosedType Spnl HtmlAttribute* Spnl ">"
def _HtmlUnclosed
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlUnclosedType)
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlUnclosed unless _tmp
return _tmp
end
# HtmlUnclosedType = ("HR" | "hr")
def _HtmlUnclosedType
_save = self.pos
while true # choice
_tmp = match_string("HR")
break if _tmp
self.pos = _save
_tmp = match_string("hr")
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_HtmlUnclosedType unless _tmp
return _tmp
end
# HtmlBlockSelfClosing = "<" Spnl HtmlBlockType Spnl HtmlAttribute* "/" Spnl ">"
def _HtmlBlockSelfClosing
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_HtmlBlockType)
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlBlockSelfClosing unless _tmp
return _tmp
end
# HtmlBlockType = ("ADDRESS" | "BLOCKQUOTE" | "CENTER" | "DD" | "DIR" | "DIV" | "DL" | "DT" | "FIELDSET" | "FORM" | "FRAMESET" | "H1" | "H2" | "H3" | "H4" | "H5" | "H6" | "HR" | "ISINDEX" | "LI" | "MENU" | "NOFRAMES" | "NOSCRIPT" | "OL" | "P" | "PRE" | "SCRIPT" | "TABLE" | "TBODY" | "TD" | "TFOOT" | "TH" | "THEAD" | "TR" | "UL" | "address" | "blockquote" | "center" | "dd" | "dir" | "div" | "dl" | "dt" | "fieldset" | "form" | "frameset" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "hr" | "isindex" | "li" | "menu" | "noframes" | "noscript" | "ol" | "p" | "pre" | "script" | "table" | "tbody" | "td" | "tfoot" | "th" | "thead" | "tr" | "ul")
def _HtmlBlockType
_save = self.pos
while true # choice
_tmp = match_string("ADDRESS")
break if _tmp
self.pos = _save
_tmp = match_string("BLOCKQUOTE")
break if _tmp
self.pos = _save
_tmp = match_string("CENTER")
break if _tmp
self.pos = _save
_tmp = match_string("DD")
break if _tmp
self.pos = _save
_tmp = match_string("DIR")
break if _tmp
self.pos = _save
_tmp = match_string("DIV")
break if _tmp
self.pos = _save
_tmp = match_string("DL")
break if _tmp
self.pos = _save
_tmp = match_string("DT")
break if _tmp
self.pos = _save
_tmp = match_string("FIELDSET")
break if _tmp
self.pos = _save
_tmp = match_string("FORM")
break if _tmp
self.pos = _save
_tmp = match_string("FRAMESET")
break if _tmp
self.pos = _save
_tmp = match_string("H1")
break if _tmp
self.pos = _save
_tmp = match_string("H2")
break if _tmp
self.pos = _save
_tmp = match_string("H3")
break if _tmp
self.pos = _save
_tmp = match_string("H4")
break if _tmp
self.pos = _save
_tmp = match_string("H5")
break if _tmp
self.pos = _save
_tmp = match_string("H6")
break if _tmp
self.pos = _save
_tmp = match_string("HR")
break if _tmp
self.pos = _save
_tmp = match_string("ISINDEX")
break if _tmp
self.pos = _save
_tmp = match_string("LI")
break if _tmp
self.pos = _save
_tmp = match_string("MENU")
break if _tmp
self.pos = _save
_tmp = match_string("NOFRAMES")
break if _tmp
self.pos = _save
_tmp = match_string("NOSCRIPT")
break if _tmp
self.pos = _save
_tmp = match_string("OL")
break if _tmp
self.pos = _save
_tmp = match_string("P")
break if _tmp
self.pos = _save
_tmp = match_string("PRE")
break if _tmp
self.pos = _save
_tmp = match_string("SCRIPT")
break if _tmp
self.pos = _save
_tmp = match_string("TABLE")
break if _tmp
self.pos = _save
_tmp = match_string("TBODY")
break if _tmp
self.pos = _save
_tmp = match_string("TD")
break if _tmp
self.pos = _save
_tmp = match_string("TFOOT")
break if _tmp
self.pos = _save
_tmp = match_string("TH")
break if _tmp
self.pos = _save
_tmp = match_string("THEAD")
break if _tmp
self.pos = _save
_tmp = match_string("TR")
break if _tmp
self.pos = _save
_tmp = match_string("UL")
break if _tmp
self.pos = _save
_tmp = match_string("address")
break if _tmp
self.pos = _save
_tmp = match_string("blockquote")
break if _tmp
self.pos = _save
_tmp = match_string("center")
break if _tmp
self.pos = _save
_tmp = match_string("dd")
break if _tmp
self.pos = _save
_tmp = match_string("dir")
break if _tmp
self.pos = _save
_tmp = match_string("div")
break if _tmp
self.pos = _save
_tmp = match_string("dl")
break if _tmp
self.pos = _save
_tmp = match_string("dt")
break if _tmp
self.pos = _save
_tmp = match_string("fieldset")
break if _tmp
self.pos = _save
_tmp = match_string("form")
break if _tmp
self.pos = _save
_tmp = match_string("frameset")
break if _tmp
self.pos = _save
_tmp = match_string("h1")
break if _tmp
self.pos = _save
_tmp = match_string("h2")
break if _tmp
self.pos = _save
_tmp = match_string("h3")
break if _tmp
self.pos = _save
_tmp = match_string("h4")
break if _tmp
self.pos = _save
_tmp = match_string("h5")
break if _tmp
self.pos = _save
_tmp = match_string("h6")
break if _tmp
self.pos = _save
_tmp = match_string("hr")
break if _tmp
self.pos = _save
_tmp = match_string("isindex")
break if _tmp
self.pos = _save
_tmp = match_string("li")
break if _tmp
self.pos = _save
_tmp = match_string("menu")
break if _tmp
self.pos = _save
_tmp = match_string("noframes")
break if _tmp
self.pos = _save
_tmp = match_string("noscript")
break if _tmp
self.pos = _save
_tmp = match_string("ol")
break if _tmp
self.pos = _save
_tmp = match_string("p")
break if _tmp
self.pos = _save
_tmp = match_string("pre")
break if _tmp
self.pos = _save
_tmp = match_string("script")
break if _tmp
self.pos = _save
_tmp = match_string("table")
break if _tmp
self.pos = _save
_tmp = match_string("tbody")
break if _tmp
self.pos = _save
_tmp = match_string("td")
break if _tmp
self.pos = _save
_tmp = match_string("tfoot")
break if _tmp
self.pos = _save
_tmp = match_string("th")
break if _tmp
self.pos = _save
_tmp = match_string("thead")
break if _tmp
self.pos = _save
_tmp = match_string("tr")
break if _tmp
self.pos = _save
_tmp = match_string("ul")
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_HtmlBlockType unless _tmp
return _tmp
end
# StyleOpen = "<" Spnl ("style" | "STYLE") Spnl HtmlAttribute* ">"
def _StyleOpen
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("style")
break if _tmp
self.pos = _save1
_tmp = match_string("STYLE")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_StyleOpen unless _tmp
return _tmp
end
# StyleClose = "<" Spnl "/" ("style" | "STYLE") Spnl ">"
def _StyleClose
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("/")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = match_string("style")
break if _tmp
self.pos = _save1
_tmp = match_string("STYLE")
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_StyleClose unless _tmp
return _tmp
end
# InStyleTags = StyleOpen (!StyleClose .)* StyleClose
def _InStyleTags
_save = self.pos
while true # sequence
_tmp = apply(:_StyleOpen)
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_tmp = apply(:_StyleClose)
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_StyleClose)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_InStyleTags unless _tmp
return _tmp
end
# StyleBlock = < InStyleTags > @BlankLine* { if css? then RDoc::Markup::Raw.new text end }
def _StyleBlock
_save = self.pos
while true # sequence
_text_start = self.pos
_tmp = apply(:_InStyleTags)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
@result = begin; if css? then
RDoc::Markup::Raw.new text
end ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_StyleBlock unless _tmp
return _tmp
end
# Inlines = (!@Endline Inline:i { i } | @Endline:c !(&{ github? } Ticks3 /[^`\n]*$/) &Inline { c })+:chunks @Endline? { chunks }
def _Inlines
_save = self.pos
while true # sequence
_save1 = self.pos
_ary = []
_save2 = self.pos
while true # choice
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = _Endline()
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_Inline)
i = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; i ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
_save5 = self.pos
while true # sequence
_tmp = _Endline()
c = @result
unless _tmp
self.pos = _save5
break
end
_save6 = self.pos
_save7 = self.pos
while true # sequence
_save8 = self.pos
_tmp = begin; github? ; end
self.pos = _save8
unless _tmp
self.pos = _save7
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save7
break
end
_tmp = scan(/\G(?-mix:[^`\n]*$)/)
unless _tmp
self.pos = _save7
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save5
break
end
_save9 = self.pos
_tmp = apply(:_Inline)
self.pos = _save9
unless _tmp
self.pos = _save5
break
end
@result = begin; c ; end
_tmp = true
unless _tmp
self.pos = _save5
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
if _tmp
_ary << @result
while true
_save10 = self.pos
while true # choice
_save11 = self.pos
while true # sequence
_save12 = self.pos
_tmp = _Endline()
_tmp = _tmp ? nil : true
self.pos = _save12
unless _tmp
self.pos = _save11
break
end
_tmp = apply(:_Inline)
i = @result
unless _tmp
self.pos = _save11
break
end
@result = begin; i ; end
_tmp = true
unless _tmp
self.pos = _save11
end
break
end # end sequence
break if _tmp
self.pos = _save10
_save13 = self.pos
while true # sequence
_tmp = _Endline()
c = @result
unless _tmp
self.pos = _save13
break
end
_save14 = self.pos
_save15 = self.pos
while true # sequence
_save16 = self.pos
_tmp = begin; github? ; end
self.pos = _save16
unless _tmp
self.pos = _save15
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save15
break
end
_tmp = scan(/\G(?-mix:[^`\n]*$)/)
unless _tmp
self.pos = _save15
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save14
unless _tmp
self.pos = _save13
break
end
_save17 = self.pos
_tmp = apply(:_Inline)
self.pos = _save17
unless _tmp
self.pos = _save13
break
end
@result = begin; c ; end
_tmp = true
unless _tmp
self.pos = _save13
end
break
end # end sequence
break if _tmp
self.pos = _save10
break
end # end choice
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save1
end
chunks = @result
unless _tmp
self.pos = _save
break
end
_save18 = self.pos
_tmp = _Endline()
unless _tmp
_tmp = true
self.pos = _save18
end
unless _tmp
self.pos = _save
break
end
@result = begin; chunks ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Inlines unless _tmp
return _tmp
end
# Inline = (Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | Entity | EscapedChar | Symbol)
def _Inline
_save = self.pos
while true # choice
_tmp = apply(:_Str)
break if _tmp
self.pos = _save
_tmp = _Endline()
break if _tmp
self.pos = _save
_tmp = apply(:_UlOrStarLine)
break if _tmp
self.pos = _save
_tmp = _Space()
break if _tmp
self.pos = _save
_tmp = apply(:_Strong)
break if _tmp
self.pos = _save
_tmp = apply(:_Emph)
break if _tmp
self.pos = _save
_tmp = apply(:_Strike)
break if _tmp
self.pos = _save
_tmp = apply(:_Image)
break if _tmp
self.pos = _save
_tmp = apply(:_Link)
break if _tmp
self.pos = _save
_tmp = apply(:_NoteReference)
break if _tmp
self.pos = _save
_tmp = apply(:_InlineNote)
break if _tmp
self.pos = _save
_tmp = apply(:_Code)
break if _tmp
self.pos = _save
_tmp = apply(:_RawHtml)
break if _tmp
self.pos = _save
_tmp = apply(:_Entity)
break if _tmp
self.pos = _save
_tmp = apply(:_EscapedChar)
break if _tmp
self.pos = _save
_tmp = apply(:_Symbol)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Inline unless _tmp
return _tmp
end
# Space = @Spacechar+ { " " }
def _Space
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = _Spacechar()
if _tmp
while true
_tmp = _Spacechar()
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
@result = begin; " " ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Space unless _tmp
return _tmp
end
# Str = @StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { a }
def _Str
_save = self.pos
while true # sequence
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_save1 = self.pos
_tmp = _NormalChar()
if _tmp
while true
_tmp = _NormalChar()
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; a = text ; end
_tmp = true
unless _tmp
self.pos = _save
break
end
while true
_save3 = self.pos
while true # sequence
_tmp = apply(:_StrChunk)
c = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; a << c ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Str unless _tmp
return _tmp
end
# StrChunk = < (@NormalChar | /_+/ &Alphanumeric)+ > { text }
def _StrChunk
_save = self.pos
while true # sequence
_text_start = self.pos
_save1 = self.pos
_save2 = self.pos
while true # choice
_tmp = _NormalChar()
break if _tmp
self.pos = _save2
_save3 = self.pos
while true # sequence
_tmp = scan(/\G(?-mix:_+)/)
unless _tmp
self.pos = _save3
break
end
_save4 = self.pos
_tmp = apply(:_Alphanumeric)
self.pos = _save4
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save2
break
end # end choice
if _tmp
while true
_save5 = self.pos
while true # choice
_tmp = _NormalChar()
break if _tmp
self.pos = _save5
_save6 = self.pos
while true # sequence
_tmp = scan(/\G(?-mix:_+)/)
unless _tmp
self.pos = _save6
break
end
_save7 = self.pos
_tmp = apply(:_Alphanumeric)
self.pos = _save7
unless _tmp
self.pos = _save6
end
break
end # end sequence
break if _tmp
self.pos = _save5
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_StrChunk unless _tmp
return _tmp
end
# EscapedChar = "\\" !@Newline < /[:\\`|*_{}\[\]()#+.!><-]/ > { text }
def _EscapedChar
_save = self.pos
while true # sequence
_tmp = match_string("\\")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_tmp = scan(/\G(?-mix:[:\\`|*_{}\[\]()#+.!><-])/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_EscapedChar unless _tmp
return _tmp
end
# Entity = (HexEntity | DecEntity | CharEntity):a { a }
def _Entity
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_tmp = apply(:_HexEntity)
break if _tmp
self.pos = _save1
_tmp = apply(:_DecEntity)
break if _tmp
self.pos = _save1
_tmp = apply(:_CharEntity)
break if _tmp
self.pos = _save1
break
end # end choice
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Entity unless _tmp
return _tmp
end
# Endline = (@LineBreak | @TerminalEndline | @NormalEndline)
def _Endline
_save = self.pos
while true # choice
_tmp = _LineBreak()
break if _tmp
self.pos = _save
_tmp = _TerminalEndline()
break if _tmp
self.pos = _save
_tmp = _NormalEndline()
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Endline unless _tmp
return _tmp
end
# NormalEndline = @Sp @Newline !@BlankLine !">" !AtxStart !(Line /={1,}|-{1,}/ @Newline) { "\n" }
def _NormalEndline
_save = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save2
unless _tmp
self.pos = _save
break
end
_save3 = self.pos
_tmp = apply(:_AtxStart)
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save
break
end
_save4 = self.pos
_save5 = self.pos
while true # sequence
_tmp = apply(:_Line)
unless _tmp
self.pos = _save5
break
end
_tmp = scan(/\G(?-mix:={1,}|-{1,})/)
unless _tmp
self.pos = _save5
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save5
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save
break
end
@result = begin; "\n" ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_NormalEndline unless _tmp
return _tmp
end
# TerminalEndline = @Sp @Newline @Eof
def _TerminalEndline
_save = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
_tmp = _Eof()
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TerminalEndline unless _tmp
return _tmp
end
# LineBreak = " " @NormalEndline { RDoc::Markup::HardBreak.new }
def _LineBreak
_save = self.pos
while true # sequence
_tmp = match_string(" ")
unless _tmp
self.pos = _save
break
end
_tmp = _NormalEndline()
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::HardBreak.new ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_LineBreak unless _tmp
return _tmp
end
# Symbol = < @SpecialChar > { text }
def _Symbol
_save = self.pos
while true # sequence
_text_start = self.pos
_tmp = _SpecialChar()
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Symbol unless _tmp
return _tmp
end
# UlOrStarLine = (UlLine | StarLine):a { a }
def _UlOrStarLine
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_tmp = apply(:_UlLine)
break if _tmp
self.pos = _save1
_tmp = apply(:_StarLine)
break if _tmp
self.pos = _save1
break
end # end choice
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_UlOrStarLine unless _tmp
return _tmp
end
# StarLine = (< /\*{4,}/ > { text } | < @Spacechar /\*+/ &@Spacechar > { text })
def _StarLine
_save = self.pos
while true # choice
_save1 = self.pos
while true # sequence
_text_start = self.pos
_tmp = scan(/\G(?-mix:\*{4,})/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save1
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save1
end
break
end # end sequence
break if _tmp
self.pos = _save
_save2 = self.pos
while true # sequence
_text_start = self.pos
_save3 = self.pos
while true # sequence
_tmp = _Spacechar()
unless _tmp
self.pos = _save3
break
end
_tmp = scan(/\G(?-mix:\*+)/)
unless _tmp
self.pos = _save3
break
end
_save4 = self.pos
_tmp = _Spacechar()
self.pos = _save4
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save2
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_StarLine unless _tmp
return _tmp
end
# UlLine = (< /_{4,}/ > { text } | < @Spacechar /_+/ &@Spacechar > { text })
def _UlLine
_save = self.pos
while true # choice
_save1 = self.pos
while true # sequence
_text_start = self.pos
_tmp = scan(/\G(?-mix:_{4,})/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save1
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save1
end
break
end # end sequence
break if _tmp
self.pos = _save
_save2 = self.pos
while true # sequence
_text_start = self.pos
_save3 = self.pos
while true # sequence
_tmp = _Spacechar()
unless _tmp
self.pos = _save3
break
end
_tmp = scan(/\G(?-mix:_+)/)
unless _tmp
self.pos = _save3
break
end
_save4 = self.pos
_tmp = _Spacechar()
self.pos = _save4
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save2
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_UlLine unless _tmp
return _tmp
end
# Emph = (EmphStar | EmphUl)
def _Emph
_save = self.pos
while true # choice
_tmp = apply(:_EmphStar)
break if _tmp
self.pos = _save
_tmp = apply(:_EmphUl)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Emph unless _tmp
return _tmp
end
# Whitespace = (@Spacechar | @Newline)
def _Whitespace
_save = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save
_tmp = _Newline()
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Whitespace unless _tmp
return _tmp
end
# EmphStar = "*" !@Whitespace @StartList:a (!"*" Inline:b { a << b } | StrongStar:b { a << b })+ "*" { emphasis a.join }
def _EmphStar
_save = self.pos
while true # sequence
_tmp = match_string("*")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _Whitespace()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # choice
_save4 = self.pos
while true # sequence
_save5 = self.pos
_tmp = match_string("*")
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save4
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save4
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save4
end
break
end # end sequence
break if _tmp
self.pos = _save3
_save6 = self.pos
while true # sequence
_tmp = apply(:_StrongStar)
b = @result
unless _tmp
self.pos = _save6
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save6
end
break
end # end sequence
break if _tmp
self.pos = _save3
break
end # end choice
if _tmp
while true
_save7 = self.pos
while true # choice
_save8 = self.pos
while true # sequence
_save9 = self.pos
_tmp = match_string("*")
_tmp = _tmp ? nil : true
self.pos = _save9
unless _tmp
self.pos = _save8
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save8
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save8
end
break
end # end sequence
break if _tmp
self.pos = _save7
_save10 = self.pos
while true # sequence
_tmp = apply(:_StrongStar)
b = @result
unless _tmp
self.pos = _save10
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save10
end
break
end # end sequence
break if _tmp
self.pos = _save7
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("*")
unless _tmp
self.pos = _save
break
end
@result = begin; emphasis a.join ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_EmphStar unless _tmp
return _tmp
end
# EmphUl = "_" !@Whitespace @StartList:a (!"_" Inline:b { a << b } | StrongUl:b { a << b })+ "_" { emphasis a.join }
def _EmphUl
_save = self.pos
while true # sequence
_tmp = match_string("_")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _Whitespace()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # choice
_save4 = self.pos
while true # sequence
_save5 = self.pos
_tmp = match_string("_")
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save4
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save4
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save4
end
break
end # end sequence
break if _tmp
self.pos = _save3
_save6 = self.pos
while true # sequence
_tmp = apply(:_StrongUl)
b = @result
unless _tmp
self.pos = _save6
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save6
end
break
end # end sequence
break if _tmp
self.pos = _save3
break
end # end choice
if _tmp
while true
_save7 = self.pos
while true # choice
_save8 = self.pos
while true # sequence
_save9 = self.pos
_tmp = match_string("_")
_tmp = _tmp ? nil : true
self.pos = _save9
unless _tmp
self.pos = _save8
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save8
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save8
end
break
end # end sequence
break if _tmp
self.pos = _save7
_save10 = self.pos
while true # sequence
_tmp = apply(:_StrongUl)
b = @result
unless _tmp
self.pos = _save10
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save10
end
break
end # end sequence
break if _tmp
self.pos = _save7
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("_")
unless _tmp
self.pos = _save
break
end
@result = begin; emphasis a.join ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_EmphUl unless _tmp
return _tmp
end
# Strong = (StrongStar | StrongUl)
def _Strong
_save = self.pos
while true # choice
_tmp = apply(:_StrongStar)
break if _tmp
self.pos = _save
_tmp = apply(:_StrongUl)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Strong unless _tmp
return _tmp
end
# StrongStar = "**" !@Whitespace @StartList:a (!"**" Inline:b { a << b })+ "**" { strong a.join }
def _StrongStar
_save = self.pos
while true # sequence
_tmp = match_string("**")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _Whitespace()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = match_string("**")
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
while true
_save5 = self.pos
while true # sequence
_save6 = self.pos
_tmp = match_string("**")
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save5
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save5
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save5
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("**")
unless _tmp
self.pos = _save
break
end
@result = begin; strong a.join ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_StrongStar unless _tmp
return _tmp
end
# StrongUl = "__" !@Whitespace @StartList:a (!"__" Inline:b { a << b })+ "__" { strong a.join }
def _StrongUl
_save = self.pos
while true # sequence
_tmp = match_string("__")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _Whitespace()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = match_string("__")
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
while true
_save5 = self.pos
while true # sequence
_save6 = self.pos
_tmp = match_string("__")
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save5
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save5
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save5
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("__")
unless _tmp
self.pos = _save
break
end
@result = begin; strong a.join ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_StrongUl unless _tmp
return _tmp
end
# Strike = &{ strike? } "~~" !@Whitespace @StartList:a (!"~~" Inline:b { a << b })+ "~~" { strike a.join }
def _Strike
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = begin; strike? ; end
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = match_string("~~")
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_tmp = _Whitespace()
_tmp = _tmp ? nil : true
self.pos = _save2
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save3 = self.pos
_save4 = self.pos
while true # sequence
_save5 = self.pos
_tmp = match_string("~~")
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save4
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save4
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save4
end
break
end # end sequence
if _tmp
while true
_save6 = self.pos
while true # sequence
_save7 = self.pos
_tmp = match_string("~~")
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save6
break
end
_tmp = apply(:_Inline)
b = @result
unless _tmp
self.pos = _save6
break
end
@result = begin; a << b ; end
_tmp = true
unless _tmp
self.pos = _save6
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save3
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("~~")
unless _tmp
self.pos = _save
break
end
@result = begin; strike a.join ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Strike unless _tmp
return _tmp
end
# Image = "!" (ExplicitLink | ReferenceLink):a { "rdoc-image:#{a[/\[(.*)\]/, 1]}" }
def _Image
_save = self.pos
while true # sequence
_tmp = match_string("!")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_tmp = apply(:_ExplicitLink)
break if _tmp
self.pos = _save1
_tmp = apply(:_ReferenceLink)
break if _tmp
self.pos = _save1
break
end # end choice
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; "rdoc-image:#{a[/\[(.*)\]/, 1]}" ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Image unless _tmp
return _tmp
end
# Link = (ExplicitLink | ReferenceLink | AutoLink)
def _Link
_save = self.pos
while true # choice
_tmp = apply(:_ExplicitLink)
break if _tmp
self.pos = _save
_tmp = apply(:_ReferenceLink)
break if _tmp
self.pos = _save
_tmp = apply(:_AutoLink)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Link unless _tmp
return _tmp
end
# ReferenceLink = (ReferenceLinkDouble | ReferenceLinkSingle)
def _ReferenceLink
_save = self.pos
while true # choice
_tmp = apply(:_ReferenceLinkDouble)
break if _tmp
self.pos = _save
_tmp = apply(:_ReferenceLinkSingle)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_ReferenceLink unless _tmp
return _tmp
end
# ReferenceLinkDouble = Label:content < Spnl > !"[]" Label:label { link_to content, label, text }
def _ReferenceLinkDouble
_save = self.pos
while true # sequence
_tmp = apply(:_Label)
content = @result
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_tmp = apply(:_Spnl)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("[]")
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Label)
label = @result
unless _tmp
self.pos = _save
break
end
@result = begin; link_to content, label, text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ReferenceLinkDouble unless _tmp
return _tmp
end
# ReferenceLinkSingle = Label:content < (Spnl "[]")? > { link_to content, content, text }
def _ReferenceLinkSingle
_save = self.pos
while true # sequence
_tmp = apply(:_Label)
content = @result
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_save1 = self.pos
_save2 = self.pos
while true # sequence
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save2
break
end
_tmp = match_string("[]")
unless _tmp
self.pos = _save2
end
break
end # end sequence
unless _tmp
_tmp = true
self.pos = _save1
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; link_to content, content, text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ReferenceLinkSingle unless _tmp
return _tmp
end
# ExplicitLink = Label:l "(" @Sp Source:s Spnl Title @Sp ")" { "{#{l}}[#{s}]" }
def _ExplicitLink
_save = self.pos
while true # sequence
_tmp = apply(:_Label)
l = @result
unless _tmp
self.pos = _save
break
end
_tmp = match_string("(")
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Source)
s = @result
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Title)
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = match_string(")")
unless _tmp
self.pos = _save
break
end
@result = begin; "{#{l}}[#{s}]" ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ExplicitLink unless _tmp
return _tmp
end
# Source = ("<" < SourceContents > ">" | < SourceContents >) { text }
def _Source
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_save2 = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save2
break
end
_text_start = self.pos
_tmp = apply(:_SourceContents)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save2
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save2
end
break
end # end sequence
break if _tmp
self.pos = _save1
_text_start = self.pos
_tmp = apply(:_SourceContents)
if _tmp
text = get_text(_text_start)
end
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Source unless _tmp
return _tmp
end
# SourceContents = ((!"(" !")" !">" Nonspacechar)+ | "(" SourceContents ")")*
def _SourceContents
while true
_save1 = self.pos
while true # choice
_save2 = self.pos
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = match_string("(")
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_save5 = self.pos
_tmp = match_string(")")
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save3
break
end
_save6 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
while true
_save7 = self.pos
while true # sequence
_save8 = self.pos
_tmp = match_string("(")
_tmp = _tmp ? nil : true
self.pos = _save8
unless _tmp
self.pos = _save7
break
end
_save9 = self.pos
_tmp = match_string(")")
_tmp = _tmp ? nil : true
self.pos = _save9
unless _tmp
self.pos = _save7
break
end
_save10 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save10
unless _tmp
self.pos = _save7
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save7
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
break if _tmp
self.pos = _save1
_save11 = self.pos
while true # sequence
_tmp = match_string("(")
unless _tmp
self.pos = _save11
break
end
_tmp = apply(:_SourceContents)
unless _tmp
self.pos = _save11
break
end
_tmp = match_string(")")
unless _tmp
self.pos = _save11
end
break
end # end sequence
break if _tmp
self.pos = _save1
break
end # end choice
break unless _tmp
end
_tmp = true
set_failed_rule :_SourceContents unless _tmp
return _tmp
end
# Title = (TitleSingle | TitleDouble | ""):a { a }
def _Title
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_tmp = apply(:_TitleSingle)
break if _tmp
self.pos = _save1
_tmp = apply(:_TitleDouble)
break if _tmp
self.pos = _save1
_tmp = match_string("")
break if _tmp
self.pos = _save1
break
end # end choice
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Title unless _tmp
return _tmp
end
# TitleSingle = "'" (!("'" @Sp (")" | @Newline)) .)* "'"
def _TitleSingle
_save = self.pos
while true # sequence
_tmp = match_string("'")
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_save4 = self.pos
while true # sequence
_tmp = match_string("'")
unless _tmp
self.pos = _save4
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save4
break
end
_save5 = self.pos
while true # choice
_tmp = match_string(")")
break if _tmp
self.pos = _save5
_tmp = _Newline()
break if _tmp
self.pos = _save5
break
end # end choice
unless _tmp
self.pos = _save4
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string("'")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TitleSingle unless _tmp
return _tmp
end
# TitleDouble = "\"" (!("\"" @Sp (")" | @Newline)) .)* "\""
def _TitleDouble
_save = self.pos
while true # sequence
_tmp = match_string("\"")
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_save4 = self.pos
while true # sequence
_tmp = match_string("\"")
unless _tmp
self.pos = _save4
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save4
break
end
_save5 = self.pos
while true # choice
_tmp = match_string(")")
break if _tmp
self.pos = _save5
_tmp = _Newline()
break if _tmp
self.pos = _save5
break
end # end choice
unless _tmp
self.pos = _save4
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string("\"")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TitleDouble unless _tmp
return _tmp
end
# AutoLink = (AutoLinkUrl | AutoLinkEmail)
def _AutoLink
_save = self.pos
while true # choice
_tmp = apply(:_AutoLinkUrl)
break if _tmp
self.pos = _save
_tmp = apply(:_AutoLinkEmail)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_AutoLink unless _tmp
return _tmp
end
# AutoLinkUrl = "<" < /[A-Za-z]+/ "://" (!@Newline !">" .)+ > ">" { text }
def _AutoLinkUrl
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_save1 = self.pos
while true # sequence
_tmp = scan(/\G(?-mix:[A-Za-z]+)/)
unless _tmp
self.pos = _save1
break
end
_tmp = match_string("://")
unless _tmp
self.pos = _save1
break
end
_save2 = self.pos
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_save5 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
while true
_save6 = self.pos
while true # sequence
_save7 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save6
break
end
_save8 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save8
unless _tmp
self.pos = _save6
break
end
_tmp = get_byte
unless _tmp
self.pos = _save6
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save1
end
break
end # end sequence
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_AutoLinkUrl unless _tmp
return _tmp
end
# AutoLinkEmail = "<" "mailto:"? < /[\w+.\/!%~$-]+/i "@" (!@Newline !">" .)+ > ">" { "mailto:#{text}" }
def _AutoLinkEmail
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("mailto:")
unless _tmp
_tmp = true
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_save2 = self.pos
while true # sequence
_tmp = scan(/\G(?i-mx:[\w+.\/!%~$-]+)/)
unless _tmp
self.pos = _save2
break
end
_tmp = match_string("@")
unless _tmp
self.pos = _save2
break
end
_save3 = self.pos
_save4 = self.pos
while true # sequence
_save5 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save4
break
end
_save6 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save4
break
end
_tmp = get_byte
unless _tmp
self.pos = _save4
end
break
end # end sequence
if _tmp
while true
_save7 = self.pos
while true # sequence
_save8 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save8
unless _tmp
self.pos = _save7
break
end
_save9 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save9
unless _tmp
self.pos = _save7
break
end
_tmp = get_byte
unless _tmp
self.pos = _save7
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save3
end
unless _tmp
self.pos = _save2
end
break
end # end sequence
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
break
end
@result = begin; "mailto:#{text}" ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_AutoLinkEmail unless _tmp
return _tmp
end
# Reference = @NonindentSpace !"[]" Label:label ":" Spnl RefSrc:link RefTitle @BlankLine+ { # TODO use title reference label, link nil }
def _Reference
_save = self.pos
while true # sequence
_tmp = _NonindentSpace()
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("[]")
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Label)
label = @result
unless _tmp
self.pos = _save
break
end
_tmp = match_string(":")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_RefSrc)
link = @result
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_RefTitle)
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_tmp = _BlankLine()
if _tmp
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
@result = begin; # TODO use title
reference label, link
nil
; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Reference unless _tmp
return _tmp
end
# Label = "[" (!"^" &{ notes? } | &. &{ !notes? }) @StartList:a (!"]" Inline:l { a << l })* "]" { a.join.gsub(/\s+/, ' ') }
def _Label
_save = self.pos
while true # sequence
_tmp = match_string("[")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
while true # choice
_save2 = self.pos
while true # sequence
_save3 = self.pos
_tmp = match_string("^")
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_save4 = self.pos
_tmp = begin; notes? ; end
self.pos = _save4
unless _tmp
self.pos = _save2
end
break
end # end sequence
break if _tmp
self.pos = _save1
_save5 = self.pos
while true # sequence
_save6 = self.pos
_tmp = get_byte
self.pos = _save6
unless _tmp
self.pos = _save5
break
end
_save7 = self.pos
_tmp = begin; !notes? ; end
self.pos = _save7
unless _tmp
self.pos = _save5
end
break
end # end sequence
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
while true
_save9 = self.pos
while true # sequence
_save10 = self.pos
_tmp = match_string("]")
_tmp = _tmp ? nil : true
self.pos = _save10
unless _tmp
self.pos = _save9
break
end
_tmp = apply(:_Inline)
l = @result
unless _tmp
self.pos = _save9
break
end
@result = begin; a << l ; end
_tmp = true
unless _tmp
self.pos = _save9
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string("]")
unless _tmp
self.pos = _save
break
end
@result = begin; a.join.gsub(/\s+/, ' ') ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Label unless _tmp
return _tmp
end
# RefSrc = < Nonspacechar+ > { text }
def _RefSrc
_save = self.pos
while true # sequence
_text_start = self.pos
_save1 = self.pos
_tmp = apply(:_Nonspacechar)
if _tmp
while true
_tmp = apply(:_Nonspacechar)
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_RefSrc unless _tmp
return _tmp
end
# RefTitle = (RefTitleSingle | RefTitleDouble | RefTitleParens | EmptyTitle)
def _RefTitle
_save = self.pos
while true # choice
_tmp = apply(:_RefTitleSingle)
break if _tmp
self.pos = _save
_tmp = apply(:_RefTitleDouble)
break if _tmp
self.pos = _save
_tmp = apply(:_RefTitleParens)
break if _tmp
self.pos = _save
_tmp = apply(:_EmptyTitle)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_RefTitle unless _tmp
return _tmp
end
# EmptyTitle = ""
def _EmptyTitle
_tmp = match_string("")
set_failed_rule :_EmptyTitle unless _tmp
return _tmp
end
# RefTitleSingle = Spnl "'" < (!("'" @Sp @Newline | @Newline) .)* > "'" { text }
def _RefTitleSingle
_save = self.pos
while true # sequence
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("'")
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_save4 = self.pos
while true # choice
_save5 = self.pos
while true # sequence
_tmp = match_string("'")
unless _tmp
self.pos = _save5
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save5
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save5
end
break
end # end sequence
break if _tmp
self.pos = _save4
_tmp = _Newline()
break if _tmp
self.pos = _save4
break
end # end choice
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("'")
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_RefTitleSingle unless _tmp
return _tmp
end
# RefTitleDouble = Spnl "\"" < (!("\"" @Sp @Newline | @Newline) .)* > "\"" { text }
def _RefTitleDouble
_save = self.pos
while true # sequence
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("\"")
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_save4 = self.pos
while true # choice
_save5 = self.pos
while true # sequence
_tmp = match_string("\"")
unless _tmp
self.pos = _save5
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save5
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save5
end
break
end # end sequence
break if _tmp
self.pos = _save4
_tmp = _Newline()
break if _tmp
self.pos = _save4
break
end # end choice
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("\"")
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_RefTitleDouble unless _tmp
return _tmp
end
# RefTitleParens = Spnl "(" < (!(")" @Sp @Newline | @Newline) .)* > ")" { text }
def _RefTitleParens
_save = self.pos
while true # sequence
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string("(")
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_save4 = self.pos
while true # choice
_save5 = self.pos
while true # sequence
_tmp = match_string(")")
unless _tmp
self.pos = _save5
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save5
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save5
end
break
end # end sequence
break if _tmp
self.pos = _save4
_tmp = _Newline()
break if _tmp
self.pos = _save4
break
end # end choice
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string(")")
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_RefTitleParens unless _tmp
return _tmp
end
# References = (Reference | SkipBlock)*
def _References
while true
_save1 = self.pos
while true # choice
_tmp = apply(:_Reference)
break if _tmp
self.pos = _save1
_tmp = apply(:_SkipBlock)
break if _tmp
self.pos = _save1
break
end # end choice
break unless _tmp
end
_tmp = true
set_failed_rule :_References unless _tmp
return _tmp
end
# Ticks1 = "`" !"`"
def _Ticks1
_save = self.pos
while true # sequence
_tmp = match_string("`")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Ticks1 unless _tmp
return _tmp
end
# Ticks2 = "``" !"`"
def _Ticks2
_save = self.pos
while true # sequence
_tmp = match_string("``")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Ticks2 unless _tmp
return _tmp
end
# Ticks3 = "```" !"`"
def _Ticks3
_save = self.pos
while true # sequence
_tmp = match_string("```")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Ticks3 unless _tmp
return _tmp
end
# Ticks4 = "````" !"`"
def _Ticks4
_save = self.pos
while true # sequence
_tmp = match_string("````")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Ticks4 unless _tmp
return _tmp
end
# Ticks5 = "`````" !"`"
def _Ticks5
_save = self.pos
while true # sequence
_tmp = match_string("`````")
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Ticks5 unless _tmp
return _tmp
end
# Code = (Ticks1 @Sp < ((!"`" Nonspacechar)+ | !Ticks1 /`+/ | !(@Sp Ticks1) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks1 | Ticks2 @Sp < ((!"`" Nonspacechar)+ | !Ticks2 /`+/ | !(@Sp Ticks2) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks2 | Ticks3 @Sp < ((!"`" Nonspacechar)+ | !Ticks3 /`+/ | !(@Sp Ticks3) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks3 | Ticks4 @Sp < ((!"`" Nonspacechar)+ | !Ticks4 /`+/ | !(@Sp Ticks4) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks4 | Ticks5 @Sp < ((!"`" Nonspacechar)+ | !Ticks5 /`+/ | !(@Sp Ticks5) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks5) { "<code>#{text}</code>" }
def _Code
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_save2 = self.pos
while true # sequence
_tmp = apply(:_Ticks1)
unless _tmp
self.pos = _save2
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save2
break
end
_text_start = self.pos
_save3 = self.pos
_save4 = self.pos
while true # choice
_save5 = self.pos
_save6 = self.pos
while true # sequence
_save7 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save6
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save6
end
break
end # end sequence
if _tmp
while true
_save8 = self.pos
while true # sequence
_save9 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save9
unless _tmp
self.pos = _save8
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save8
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save5
end
break if _tmp
self.pos = _save4
_save10 = self.pos
while true # sequence
_save11 = self.pos
_tmp = apply(:_Ticks1)
_tmp = _tmp ? nil : true
self.pos = _save11
unless _tmp
self.pos = _save10
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save10
end
break
end # end sequence
break if _tmp
self.pos = _save4
_save12 = self.pos
while true # sequence
_save13 = self.pos
_save14 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save14
break
end
_tmp = apply(:_Ticks1)
unless _tmp
self.pos = _save14
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save13
unless _tmp
self.pos = _save12
break
end
_save15 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save15
_save16 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save16
break
end
_save17 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save17
unless _tmp
self.pos = _save16
end
break
end # end sequence
break if _tmp
self.pos = _save15
break
end # end choice
unless _tmp
self.pos = _save12
end
break
end # end sequence
break if _tmp
self.pos = _save4
break
end # end choice
if _tmp
while true
_save18 = self.pos
while true # choice
_save19 = self.pos
_save20 = self.pos
while true # sequence
_save21 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save21
unless _tmp
self.pos = _save20
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save20
end
break
end # end sequence
if _tmp
while true
_save22 = self.pos
while true # sequence
_save23 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save23
unless _tmp
self.pos = _save22
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save22
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save19
end
break if _tmp
self.pos = _save18
_save24 = self.pos
while true # sequence
_save25 = self.pos
_tmp = apply(:_Ticks1)
_tmp = _tmp ? nil : true
self.pos = _save25
unless _tmp
self.pos = _save24
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save24
end
break
end # end sequence
break if _tmp
self.pos = _save18
_save26 = self.pos
while true # sequence
_save27 = self.pos
_save28 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save28
break
end
_tmp = apply(:_Ticks1)
unless _tmp
self.pos = _save28
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save27
unless _tmp
self.pos = _save26
break
end
_save29 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save29
_save30 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save30
break
end
_save31 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save31
unless _tmp
self.pos = _save30
end
break
end # end sequence
break if _tmp
self.pos = _save29
break
end # end choice
unless _tmp
self.pos = _save26
end
break
end # end sequence
break if _tmp
self.pos = _save18
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save3
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save2
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save2
break
end
_tmp = apply(:_Ticks1)
unless _tmp
self.pos = _save2
end
break
end # end sequence
break if _tmp
self.pos = _save1
_save32 = self.pos
while true # sequence
_tmp = apply(:_Ticks2)
unless _tmp
self.pos = _save32
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save32
break
end
_text_start = self.pos
_save33 = self.pos
_save34 = self.pos
while true # choice
_save35 = self.pos
_save36 = self.pos
while true # sequence
_save37 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save37
unless _tmp
self.pos = _save36
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save36
end
break
end # end sequence
if _tmp
while true
_save38 = self.pos
while true # sequence
_save39 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save39
unless _tmp
self.pos = _save38
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save38
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save35
end
break if _tmp
self.pos = _save34
_save40 = self.pos
while true # sequence
_save41 = self.pos
_tmp = apply(:_Ticks2)
_tmp = _tmp ? nil : true
self.pos = _save41
unless _tmp
self.pos = _save40
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save40
end
break
end # end sequence
break if _tmp
self.pos = _save34
_save42 = self.pos
while true # sequence
_save43 = self.pos
_save44 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save44
break
end
_tmp = apply(:_Ticks2)
unless _tmp
self.pos = _save44
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save43
unless _tmp
self.pos = _save42
break
end
_save45 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save45
_save46 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save46
break
end
_save47 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save47
unless _tmp
self.pos = _save46
end
break
end # end sequence
break if _tmp
self.pos = _save45
break
end # end choice
unless _tmp
self.pos = _save42
end
break
end # end sequence
break if _tmp
self.pos = _save34
break
end # end choice
if _tmp
while true
_save48 = self.pos
while true # choice
_save49 = self.pos
_save50 = self.pos
while true # sequence
_save51 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save51
unless _tmp
self.pos = _save50
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save50
end
break
end # end sequence
if _tmp
while true
_save52 = self.pos
while true # sequence
_save53 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save53
unless _tmp
self.pos = _save52
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save52
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save49
end
break if _tmp
self.pos = _save48
_save54 = self.pos
while true # sequence
_save55 = self.pos
_tmp = apply(:_Ticks2)
_tmp = _tmp ? nil : true
self.pos = _save55
unless _tmp
self.pos = _save54
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save54
end
break
end # end sequence
break if _tmp
self.pos = _save48
_save56 = self.pos
while true # sequence
_save57 = self.pos
_save58 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save58
break
end
_tmp = apply(:_Ticks2)
unless _tmp
self.pos = _save58
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save57
unless _tmp
self.pos = _save56
break
end
_save59 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save59
_save60 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save60
break
end
_save61 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save61
unless _tmp
self.pos = _save60
end
break
end # end sequence
break if _tmp
self.pos = _save59
break
end # end choice
unless _tmp
self.pos = _save56
end
break
end # end sequence
break if _tmp
self.pos = _save48
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save33
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save32
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save32
break
end
_tmp = apply(:_Ticks2)
unless _tmp
self.pos = _save32
end
break
end # end sequence
break if _tmp
self.pos = _save1
_save62 = self.pos
while true # sequence
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save62
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save62
break
end
_text_start = self.pos
_save63 = self.pos
_save64 = self.pos
while true # choice
_save65 = self.pos
_save66 = self.pos
while true # sequence
_save67 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save67
unless _tmp
self.pos = _save66
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save66
end
break
end # end sequence
if _tmp
while true
_save68 = self.pos
while true # sequence
_save69 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save69
unless _tmp
self.pos = _save68
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save68
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save65
end
break if _tmp
self.pos = _save64
_save70 = self.pos
while true # sequence
_save71 = self.pos
_tmp = apply(:_Ticks3)
_tmp = _tmp ? nil : true
self.pos = _save71
unless _tmp
self.pos = _save70
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save70
end
break
end # end sequence
break if _tmp
self.pos = _save64
_save72 = self.pos
while true # sequence
_save73 = self.pos
_save74 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save74
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save74
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save73
unless _tmp
self.pos = _save72
break
end
_save75 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save75
_save76 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save76
break
end
_save77 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save77
unless _tmp
self.pos = _save76
end
break
end # end sequence
break if _tmp
self.pos = _save75
break
end # end choice
unless _tmp
self.pos = _save72
end
break
end # end sequence
break if _tmp
self.pos = _save64
break
end # end choice
if _tmp
while true
_save78 = self.pos
while true # choice
_save79 = self.pos
_save80 = self.pos
while true # sequence
_save81 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save81
unless _tmp
self.pos = _save80
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save80
end
break
end # end sequence
if _tmp
while true
_save82 = self.pos
while true # sequence
_save83 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save83
unless _tmp
self.pos = _save82
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save82
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save79
end
break if _tmp
self.pos = _save78
_save84 = self.pos
while true # sequence
_save85 = self.pos
_tmp = apply(:_Ticks3)
_tmp = _tmp ? nil : true
self.pos = _save85
unless _tmp
self.pos = _save84
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save84
end
break
end # end sequence
break if _tmp
self.pos = _save78
_save86 = self.pos
while true # sequence
_save87 = self.pos
_save88 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save88
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save88
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save87
unless _tmp
self.pos = _save86
break
end
_save89 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save89
_save90 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save90
break
end
_save91 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save91
unless _tmp
self.pos = _save90
end
break
end # end sequence
break if _tmp
self.pos = _save89
break
end # end choice
unless _tmp
self.pos = _save86
end
break
end # end sequence
break if _tmp
self.pos = _save78
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save63
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save62
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save62
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save62
end
break
end # end sequence
break if _tmp
self.pos = _save1
_save92 = self.pos
while true # sequence
_tmp = apply(:_Ticks4)
unless _tmp
self.pos = _save92
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save92
break
end
_text_start = self.pos
_save93 = self.pos
_save94 = self.pos
while true # choice
_save95 = self.pos
_save96 = self.pos
while true # sequence
_save97 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save97
unless _tmp
self.pos = _save96
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save96
end
break
end # end sequence
if _tmp
while true
_save98 = self.pos
while true # sequence
_save99 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save99
unless _tmp
self.pos = _save98
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save98
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save95
end
break if _tmp
self.pos = _save94
_save100 = self.pos
while true # sequence
_save101 = self.pos
_tmp = apply(:_Ticks4)
_tmp = _tmp ? nil : true
self.pos = _save101
unless _tmp
self.pos = _save100
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save100
end
break
end # end sequence
break if _tmp
self.pos = _save94
_save102 = self.pos
while true # sequence
_save103 = self.pos
_save104 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save104
break
end
_tmp = apply(:_Ticks4)
unless _tmp
self.pos = _save104
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save103
unless _tmp
self.pos = _save102
break
end
_save105 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save105
_save106 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save106
break
end
_save107 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save107
unless _tmp
self.pos = _save106
end
break
end # end sequence
break if _tmp
self.pos = _save105
break
end # end choice
unless _tmp
self.pos = _save102
end
break
end # end sequence
break if _tmp
self.pos = _save94
break
end # end choice
if _tmp
while true
_save108 = self.pos
while true # choice
_save109 = self.pos
_save110 = self.pos
while true # sequence
_save111 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save111
unless _tmp
self.pos = _save110
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save110
end
break
end # end sequence
if _tmp
while true
_save112 = self.pos
while true # sequence
_save113 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save113
unless _tmp
self.pos = _save112
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save112
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save109
end
break if _tmp
self.pos = _save108
_save114 = self.pos
while true # sequence
_save115 = self.pos
_tmp = apply(:_Ticks4)
_tmp = _tmp ? nil : true
self.pos = _save115
unless _tmp
self.pos = _save114
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save114
end
break
end # end sequence
break if _tmp
self.pos = _save108
_save116 = self.pos
while true # sequence
_save117 = self.pos
_save118 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save118
break
end
_tmp = apply(:_Ticks4)
unless _tmp
self.pos = _save118
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save117
unless _tmp
self.pos = _save116
break
end
_save119 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save119
_save120 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save120
break
end
_save121 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save121
unless _tmp
self.pos = _save120
end
break
end # end sequence
break if _tmp
self.pos = _save119
break
end # end choice
unless _tmp
self.pos = _save116
end
break
end # end sequence
break if _tmp
self.pos = _save108
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save93
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save92
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save92
break
end
_tmp = apply(:_Ticks4)
unless _tmp
self.pos = _save92
end
break
end # end sequence
break if _tmp
self.pos = _save1
_save122 = self.pos
while true # sequence
_tmp = apply(:_Ticks5)
unless _tmp
self.pos = _save122
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save122
break
end
_text_start = self.pos
_save123 = self.pos
_save124 = self.pos
while true # choice
_save125 = self.pos
_save126 = self.pos
while true # sequence
_save127 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save127
unless _tmp
self.pos = _save126
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save126
end
break
end # end sequence
if _tmp
while true
_save128 = self.pos
while true # sequence
_save129 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save129
unless _tmp
self.pos = _save128
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save128
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save125
end
break if _tmp
self.pos = _save124
_save130 = self.pos
while true # sequence
_save131 = self.pos
_tmp = apply(:_Ticks5)
_tmp = _tmp ? nil : true
self.pos = _save131
unless _tmp
self.pos = _save130
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save130
end
break
end # end sequence
break if _tmp
self.pos = _save124
_save132 = self.pos
while true # sequence
_save133 = self.pos
_save134 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save134
break
end
_tmp = apply(:_Ticks5)
unless _tmp
self.pos = _save134
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save133
unless _tmp
self.pos = _save132
break
end
_save135 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save135
_save136 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save136
break
end
_save137 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save137
unless _tmp
self.pos = _save136
end
break
end # end sequence
break if _tmp
self.pos = _save135
break
end # end choice
unless _tmp
self.pos = _save132
end
break
end # end sequence
break if _tmp
self.pos = _save124
break
end # end choice
if _tmp
while true
_save138 = self.pos
while true # choice
_save139 = self.pos
_save140 = self.pos
while true # sequence
_save141 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save141
unless _tmp
self.pos = _save140
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save140
end
break
end # end sequence
if _tmp
while true
_save142 = self.pos
while true # sequence
_save143 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save143
unless _tmp
self.pos = _save142
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save142
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save139
end
break if _tmp
self.pos = _save138
_save144 = self.pos
while true # sequence
_save145 = self.pos
_tmp = apply(:_Ticks5)
_tmp = _tmp ? nil : true
self.pos = _save145
unless _tmp
self.pos = _save144
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save144
end
break
end # end sequence
break if _tmp
self.pos = _save138
_save146 = self.pos
while true # sequence
_save147 = self.pos
_save148 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save148
break
end
_tmp = apply(:_Ticks5)
unless _tmp
self.pos = _save148
end
break
end # end sequence
_tmp = _tmp ? nil : true
self.pos = _save147
unless _tmp
self.pos = _save146
break
end
_save149 = self.pos
while true # choice
_tmp = _Spacechar()
break if _tmp
self.pos = _save149
_save150 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save150
break
end
_save151 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save151
unless _tmp
self.pos = _save150
end
break
end # end sequence
break if _tmp
self.pos = _save149
break
end # end choice
unless _tmp
self.pos = _save146
end
break
end # end sequence
break if _tmp
self.pos = _save138
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save123
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save122
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save122
break
end
_tmp = apply(:_Ticks5)
unless _tmp
self.pos = _save122
end
break
end # end sequence
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
@result = begin; "<code>#{text}</code>" ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Code unless _tmp
return _tmp
end
# RawHtml = < (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end }
def _RawHtml
_save = self.pos
while true # sequence
_text_start = self.pos
_save1 = self.pos
while true # choice
_tmp = apply(:_HtmlComment)
break if _tmp
self.pos = _save1
_tmp = apply(:_HtmlBlockScript)
break if _tmp
self.pos = _save1
_tmp = apply(:_HtmlTag)
break if _tmp
self.pos = _save1
break
end # end choice
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; if html? then text else '' end ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_RawHtml unless _tmp
return _tmp
end
# BlankLine = @Sp @Newline { "\n" }
def _BlankLine
_save = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
@result = begin; "\n" ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_BlankLine unless _tmp
return _tmp
end
# Quoted = ("\"" (!"\"" .)* "\"" | "'" (!"'" .)* "'")
def _Quoted
_save = self.pos
while true # choice
_save1 = self.pos
while true # sequence
_tmp = match_string("\"")
unless _tmp
self.pos = _save1
break
end
while true
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = match_string("\"")
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = get_byte
unless _tmp
self.pos = _save3
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save1
break
end
_tmp = match_string("\"")
unless _tmp
self.pos = _save1
end
break
end # end sequence
break if _tmp
self.pos = _save
_save5 = self.pos
while true # sequence
_tmp = match_string("'")
unless _tmp
self.pos = _save5
break
end
while true
_save7 = self.pos
while true # sequence
_save8 = self.pos
_tmp = match_string("'")
_tmp = _tmp ? nil : true
self.pos = _save8
unless _tmp
self.pos = _save7
break
end
_tmp = get_byte
unless _tmp
self.pos = _save7
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save5
break
end
_tmp = match_string("'")
unless _tmp
self.pos = _save5
end
break
end # end sequence
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Quoted unless _tmp
return _tmp
end
# HtmlAttribute = (AlphanumericAscii | "-")+ Spnl ("=" Spnl (Quoted | (!">" Nonspacechar)+))? Spnl
def _HtmlAttribute
_save = self.pos
while true # sequence
_save1 = self.pos
_save2 = self.pos
while true # choice
_tmp = apply(:_AlphanumericAscii)
break if _tmp
self.pos = _save2
_tmp = match_string("-")
break if _tmp
self.pos = _save2
break
end # end choice
if _tmp
while true
_save3 = self.pos
while true # choice
_tmp = apply(:_AlphanumericAscii)
break if _tmp
self.pos = _save3
_tmp = match_string("-")
break if _tmp
self.pos = _save3
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save4 = self.pos
_save5 = self.pos
while true # sequence
_tmp = match_string("=")
unless _tmp
self.pos = _save5
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save5
break
end
_save6 = self.pos
while true # choice
_tmp = apply(:_Quoted)
break if _tmp
self.pos = _save6
_save7 = self.pos
_save8 = self.pos
while true # sequence
_save9 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save9
unless _tmp
self.pos = _save8
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save8
end
break
end # end sequence
if _tmp
while true
_save10 = self.pos
while true # sequence
_save11 = self.pos
_tmp = match_string(">")
_tmp = _tmp ? nil : true
self.pos = _save11
unless _tmp
self.pos = _save10
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save10
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save7
end
break if _tmp
self.pos = _save6
break
end # end choice
unless _tmp
self.pos = _save5
end
break
end # end sequence
unless _tmp
_tmp = true
self.pos = _save4
end
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlAttribute unless _tmp
return _tmp
end
# HtmlComment = "<!--" (!"-->" .)* "-->"
def _HtmlComment
_save = self.pos
while true # sequence
_tmp = match_string("<!--")
unless _tmp
self.pos = _save
break
end
while true
_save2 = self.pos
while true # sequence
_save3 = self.pos
_tmp = match_string("-->")
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = match_string("-->")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlComment unless _tmp
return _tmp
end
# HtmlTag = "<" Spnl "/"? AlphanumericAscii+ Spnl HtmlAttribute* "/"? Spnl ">"
def _HtmlTag
_save = self.pos
while true # sequence
_tmp = match_string("<")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = match_string("/")
unless _tmp
_tmp = true
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_tmp = apply(:_AlphanumericAscii)
if _tmp
while true
_tmp = apply(:_AlphanumericAscii)
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_HtmlAttribute)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_save4 = self.pos
_tmp = match_string("/")
unless _tmp
_tmp = true
self.pos = _save4
end
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_tmp = match_string(">")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HtmlTag unless _tmp
return _tmp
end
# Eof = !.
def _Eof
_save = self.pos
_tmp = get_byte
_tmp = _tmp ? nil : true
self.pos = _save
set_failed_rule :_Eof unless _tmp
return _tmp
end
# Nonspacechar = !@Spacechar !@Newline .
def _Nonspacechar
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = _Spacechar()
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save2
unless _tmp
self.pos = _save
break
end
_tmp = get_byte
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Nonspacechar unless _tmp
return _tmp
end
# Sp = @Spacechar*
def _Sp
while true
_tmp = _Spacechar()
break unless _tmp
end
_tmp = true
set_failed_rule :_Sp unless _tmp
return _tmp
end
# Spnl = @Sp (@Newline @Sp)?
def _Spnl
_save = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_save2 = self.pos
while true # sequence
_tmp = _Newline()
unless _tmp
self.pos = _save2
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save2
end
break
end # end sequence
unless _tmp
_tmp = true
self.pos = _save1
end
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Spnl unless _tmp
return _tmp
end
# SpecialChar = (/[~*_`&\[\]()<!#\\'"]/ | @ExtendedSpecialChar)
def _SpecialChar
_save = self.pos
while true # choice
_tmp = scan(/\G(?-mix:[~*_`&\[\]()<!#\\'"])/)
break if _tmp
self.pos = _save
_tmp = _ExtendedSpecialChar()
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_SpecialChar unless _tmp
return _tmp
end
# NormalChar = !(@SpecialChar | @Spacechar | @Newline) .
def _NormalChar
_save = self.pos
while true # sequence
_save1 = self.pos
_save2 = self.pos
while true # choice
_tmp = _SpecialChar()
break if _tmp
self.pos = _save2
_tmp = _Spacechar()
break if _tmp
self.pos = _save2
_tmp = _Newline()
break if _tmp
self.pos = _save2
break
end # end choice
_tmp = _tmp ? nil : true
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = get_byte
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_NormalChar unless _tmp
return _tmp
end
# Digit = [0-9]
def _Digit
_save = self.pos
_tmp = get_byte
if _tmp
unless _tmp >= 48 and _tmp <= 57
self.pos = _save
_tmp = nil
end
end
set_failed_rule :_Digit unless _tmp
return _tmp
end
# Alphanumeric = %literals.Alphanumeric
def _Alphanumeric
_tmp = @_grammar_literals.external_invoke(self, :_Alphanumeric)
set_failed_rule :_Alphanumeric unless _tmp
return _tmp
end
# AlphanumericAscii = %literals.AlphanumericAscii
def _AlphanumericAscii
_tmp = @_grammar_literals.external_invoke(self, :_AlphanumericAscii)
set_failed_rule :_AlphanumericAscii unless _tmp
return _tmp
end
# BOM = %literals.BOM
def _BOM
_tmp = @_grammar_literals.external_invoke(self, :_BOM)
set_failed_rule :_BOM unless _tmp
return _tmp
end
# Newline = %literals.Newline
def _Newline
_tmp = @_grammar_literals.external_invoke(self, :_Newline)
set_failed_rule :_Newline unless _tmp
return _tmp
end
# Spacechar = %literals.Spacechar
def _Spacechar
_tmp = @_grammar_literals.external_invoke(self, :_Spacechar)
set_failed_rule :_Spacechar unless _tmp
return _tmp
end
# HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";" { [text.to_i(16)].pack 'U' }
def _HexEntity
_save = self.pos
while true # sequence
_tmp = scan(/\G(?i-mx:&#x)/)
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_tmp = scan(/\G(?-mix:[0-9a-fA-F]+)/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string(";")
unless _tmp
self.pos = _save
break
end
@result = begin; [text.to_i(16)].pack 'U' ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_HexEntity unless _tmp
return _tmp
end
# DecEntity = "&#" < /[0-9]+/ > ";" { [text.to_i].pack 'U' }
def _DecEntity
_save = self.pos
while true # sequence
_tmp = match_string("&#")
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_tmp = scan(/\G(?-mix:[0-9]+)/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string(";")
unless _tmp
self.pos = _save
break
end
@result = begin; [text.to_i].pack 'U' ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_DecEntity unless _tmp
return _tmp
end
# CharEntity = "&" < /[A-Za-z0-9]+/ > ";" { if entity = HTML_ENTITIES[text] then entity.pack 'U*' else "&#{text};" end }
def _CharEntity
_save = self.pos
while true # sequence
_tmp = match_string("&")
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_tmp = scan(/\G(?-mix:[A-Za-z0-9]+)/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string(";")
unless _tmp
self.pos = _save
break
end
@result = begin; if entity = HTML_ENTITIES[text] then
entity.pack 'U*'
else
"&#{text};"
end
; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_CharEntity unless _tmp
return _tmp
end
# NonindentSpace = / {0,3}/
def _NonindentSpace
_tmp = scan(/\G(?-mix: {0,3})/)
set_failed_rule :_NonindentSpace unless _tmp
return _tmp
end
# Indent = /\t| /
def _Indent
_tmp = scan(/\G(?-mix:\t| )/)
set_failed_rule :_Indent unless _tmp
return _tmp
end
# IndentedLine = Indent Line
def _IndentedLine
_save = self.pos
while true # sequence
_tmp = apply(:_Indent)
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Line)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_IndentedLine unless _tmp
return _tmp
end
# OptionallyIndentedLine = Indent? Line
def _OptionallyIndentedLine
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = apply(:_Indent)
unless _tmp
_tmp = true
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Line)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_OptionallyIndentedLine unless _tmp
return _tmp
end
# StartList = &. { [] }
def _StartList
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = get_byte
self.pos = _save1
unless _tmp
self.pos = _save
break
end
@result = begin; [] ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_StartList unless _tmp
return _tmp
end
# Line = @RawLine:a { a }
def _Line
_save = self.pos
while true # sequence
_tmp = _RawLine()
a = @result
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Line unless _tmp
return _tmp
end
# RawLine = (< /[^\r\n]*/ @Newline > | < .+ > @Eof) { text }
def _RawLine
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_text_start = self.pos
_save2 = self.pos
while true # sequence
_tmp = scan(/\G(?-mix:[^\r\n]*)/)
unless _tmp
self.pos = _save2
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save2
end
break
end # end sequence
if _tmp
text = get_text(_text_start)
end
break if _tmp
self.pos = _save1
_save3 = self.pos
while true # sequence
_text_start = self.pos
_save4 = self.pos
_tmp = get_byte
if _tmp
while true
_tmp = get_byte
break unless _tmp
end
_tmp = true
else
self.pos = _save4
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save3
break
end
_tmp = _Eof()
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_RawLine unless _tmp
return _tmp
end
# SkipBlock = (HtmlBlock | (!"#" !SetextBottom1 !SetextBottom2 !@BlankLine @RawLine)+ @BlankLine* | @BlankLine+ | @RawLine)
def _SkipBlock
_save = self.pos
while true # choice
_tmp = apply(:_HtmlBlock)
break if _tmp
self.pos = _save
_save1 = self.pos
while true # sequence
_save2 = self.pos
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = match_string("#")
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_save5 = self.pos
_tmp = apply(:_SetextBottom1)
_tmp = _tmp ? nil : true
self.pos = _save5
unless _tmp
self.pos = _save3
break
end
_save6 = self.pos
_tmp = apply(:_SetextBottom2)
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save3
break
end
_save7 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save3
break
end
_tmp = _RawLine()
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
while true
_save8 = self.pos
while true # sequence
_save9 = self.pos
_tmp = match_string("#")
_tmp = _tmp ? nil : true
self.pos = _save9
unless _tmp
self.pos = _save8
break
end
_save10 = self.pos
_tmp = apply(:_SetextBottom1)
_tmp = _tmp ? nil : true
self.pos = _save10
unless _tmp
self.pos = _save8
break
end
_save11 = self.pos
_tmp = apply(:_SetextBottom2)
_tmp = _tmp ? nil : true
self.pos = _save11
unless _tmp
self.pos = _save8
break
end
_save12 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save12
unless _tmp
self.pos = _save8
break
end
_tmp = _RawLine()
unless _tmp
self.pos = _save8
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save1
break
end
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save1
end
break
end # end sequence
break if _tmp
self.pos = _save
_save14 = self.pos
_tmp = _BlankLine()
if _tmp
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
else
self.pos = _save14
end
break if _tmp
self.pos = _save
_tmp = _RawLine()
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_SkipBlock unless _tmp
return _tmp
end
# ExtendedSpecialChar = &{ notes? } "^"
def _ExtendedSpecialChar
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = begin; notes? ; end
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = match_string("^")
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ExtendedSpecialChar unless _tmp
return _tmp
end
# NoteReference = &{ notes? } RawNoteReference:ref { note_for ref }
def _NoteReference
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = begin; notes? ; end
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_RawNoteReference)
ref = @result
unless _tmp
self.pos = _save
break
end
@result = begin; note_for ref ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_NoteReference unless _tmp
return _tmp
end
# RawNoteReference = "[^" < (!@Newline !"]" .)+ > "]" { text }
def _RawNoteReference
_save = self.pos
while true # sequence
_tmp = match_string("[^")
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_save1 = self.pos
_save2 = self.pos
while true # sequence
_save3 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_save4 = self.pos
_tmp = match_string("]")
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save2
break
end
_tmp = get_byte
unless _tmp
self.pos = _save2
end
break
end # end sequence
if _tmp
while true
_save5 = self.pos
while true # sequence
_save6 = self.pos
_tmp = _Newline()
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save5
break
end
_save7 = self.pos
_tmp = match_string("]")
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save5
break
end
_tmp = get_byte
unless _tmp
self.pos = _save5
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("]")
unless _tmp
self.pos = _save
break
end
@result = begin; text ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_RawNoteReference unless _tmp
return _tmp
end
# Note = &{ notes? } @NonindentSpace RawNoteReference:ref ":" @Sp @StartList:a RawNoteBlock:i { a.concat i } (&Indent RawNoteBlock:i { a.concat i })* { @footnotes[ref] = paragraph a nil }
def _Note
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = begin; notes? ; end
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = _NonindentSpace()
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_RawNoteReference)
ref = @result
unless _tmp
self.pos = _save
break
end
_tmp = match_string(":")
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_RawNoteBlock)
i = @result
unless _tmp
self.pos = _save
break
end
@result = begin; a.concat i ; end
_tmp = true
unless _tmp
self.pos = _save
break
end
while true
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = apply(:_Indent)
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_RawNoteBlock)
i = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; a.concat i ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
@result = begin; @footnotes[ref] = paragraph a
nil
; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Note unless _tmp
return _tmp
end
# InlineNote = &{ notes? } "^[" @StartList:a (!"]" Inline:l { a << l })+ "]" { ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref }
def _InlineNote
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = begin; notes? ; end
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = match_string("^[")
unless _tmp
self.pos = _save
break
end
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # sequence
_save4 = self.pos
_tmp = match_string("]")
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_Inline)
l = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; a << l ; end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
if _tmp
while true
_save5 = self.pos
while true # sequence
_save6 = self.pos
_tmp = match_string("]")
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save5
break
end
_tmp = apply(:_Inline)
l = @result
unless _tmp
self.pos = _save5
break
end
@result = begin; a << l ; end
_tmp = true
unless _tmp
self.pos = _save5
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
_tmp = match_string("]")
unless _tmp
self.pos = _save
break
end
@result = begin; ref = [:inline, @note_order.length]
@footnotes[ref] = paragraph a
note_for ref
; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_InlineNote unless _tmp
return _tmp
end
# Notes = (Note | SkipBlock)*
def _Notes
while true
_save1 = self.pos
while true # choice
_tmp = apply(:_Note)
break if _tmp
self.pos = _save1
_tmp = apply(:_SkipBlock)
break if _tmp
self.pos = _save1
break
end # end choice
break unless _tmp
end
_tmp = true
set_failed_rule :_Notes unless _tmp
return _tmp
end
# RawNoteBlock = @StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }
def _RawNoteBlock
_save = self.pos
while true # sequence
_tmp = _StartList()
a = @result
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_save2 = self.pos
while true # sequence
_save3 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save3
unless _tmp
self.pos = _save2
break
end
_save4 = self.pos
_tmp = apply(:_RawNoteReference)
_tmp = _tmp ? nil : true
self.pos = _save4
unless _tmp
self.pos = _save2
break
end
_tmp = apply(:_OptionallyIndentedLine)
l = @result
unless _tmp
self.pos = _save2
break
end
@result = begin; a << l ; end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
if _tmp
while true
_save5 = self.pos
while true # sequence
_save6 = self.pos
_tmp = _BlankLine()
_tmp = _tmp ? nil : true
self.pos = _save6
unless _tmp
self.pos = _save5
break
end
_save7 = self.pos
_tmp = apply(:_RawNoteReference)
_tmp = _tmp ? nil : true
self.pos = _save7
unless _tmp
self.pos = _save5
break
end
_tmp = apply(:_OptionallyIndentedLine)
l = @result
unless _tmp
self.pos = _save5
break
end
@result = begin; a << l ; end
_tmp = true
unless _tmp
self.pos = _save5
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; a << text ; end
_tmp = true
unless _tmp
self.pos = _save
break
end
@result = begin; a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_RawNoteBlock unless _tmp
return _tmp
end
# CodeFence = &{ github? } Ticks3 (@Sp StrChunk:format)? Spnl < ((!"`" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text verbatim.format = format.intern if format.instance_of?(String) verbatim }
def _CodeFence
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = begin; github? ; end
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_save3 = self.pos
while true # sequence
_tmp = _Sp()
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_StrChunk)
format = @result
unless _tmp
self.pos = _save3
end
break
end # end sequence
unless _tmp
_tmp = true
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Spnl)
unless _tmp
self.pos = _save
break
end
_text_start = self.pos
_save4 = self.pos
_save5 = self.pos
while true # choice
_save6 = self.pos
_save7 = self.pos
while true # sequence
_save8 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save8
unless _tmp
self.pos = _save7
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save7
end
break
end # end sequence
if _tmp
while true
_save9 = self.pos
while true # sequence
_save10 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save10
unless _tmp
self.pos = _save9
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save9
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save6
end
break if _tmp
self.pos = _save5
_save11 = self.pos
while true # sequence
_save12 = self.pos
_tmp = apply(:_Ticks3)
_tmp = _tmp ? nil : true
self.pos = _save12
unless _tmp
self.pos = _save11
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save11
end
break
end # end sequence
break if _tmp
self.pos = _save5
_tmp = apply(:_Spacechar)
break if _tmp
self.pos = _save5
_tmp = _Newline()
break if _tmp
self.pos = _save5
break
end # end choice
if _tmp
while true
_save13 = self.pos
while true # choice
_save14 = self.pos
_save15 = self.pos
while true # sequence
_save16 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save16
unless _tmp
self.pos = _save15
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save15
end
break
end # end sequence
if _tmp
while true
_save17 = self.pos
while true # sequence
_save18 = self.pos
_tmp = match_string("`")
_tmp = _tmp ? nil : true
self.pos = _save18
unless _tmp
self.pos = _save17
break
end
_tmp = apply(:_Nonspacechar)
unless _tmp
self.pos = _save17
end
break
end # end sequence
break unless _tmp
end
_tmp = true
else
self.pos = _save14
end
break if _tmp
self.pos = _save13
_save19 = self.pos
while true # sequence
_save20 = self.pos
_tmp = apply(:_Ticks3)
_tmp = _tmp ? nil : true
self.pos = _save20
unless _tmp
self.pos = _save19
break
end
_tmp = scan(/\G(?-mix:`+)/)
unless _tmp
self.pos = _save19
end
break
end # end sequence
break if _tmp
self.pos = _save13
_tmp = apply(:_Spacechar)
break if _tmp
self.pos = _save13
_tmp = _Newline()
break if _tmp
self.pos = _save13
break
end # end choice
break unless _tmp
end
_tmp = true
else
self.pos = _save4
end
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Ticks3)
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
while true
_tmp = _Newline()
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
@result = begin; verbatim = RDoc::Markup::Verbatim.new text
verbatim.format = format.intern if format.instance_of?(String)
verbatim
; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_CodeFence unless _tmp
return _tmp
end
# Table = &{ github? } TableHead:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }
def _Table
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = begin; github? ; end
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_TableHead)
header = @result
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_TableLine)
line = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_ary = []
_tmp = apply(:_TableRow)
if _tmp
_ary << @result
while true
_tmp = apply(:_TableRow)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save2
end
body = @result
unless _tmp
self.pos = _save
break
end
@result = begin; table = RDoc::Markup::Table.new(header, line, body) ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_Table unless _tmp
return _tmp
end
# TableHead = TableItem2+:items "|"? @Newline { items }
def _TableHead
_save = self.pos
while true # sequence
_save1 = self.pos
_ary = []
_tmp = apply(:_TableItem2)
if _tmp
_ary << @result
while true
_tmp = apply(:_TableItem2)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save1
end
items = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_tmp = match_string("|")
unless _tmp
_tmp = true
self.pos = _save2
end
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
@result = begin; items ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TableHead unless _tmp
return _tmp
end
# TableRow = ((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) "|"? @Newline { row }
def _TableRow
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_save2 = self.pos
while true # sequence
_tmp = apply(:_TableItem)
item1 = @result
unless _tmp
self.pos = _save2
break
end
_ary = []
while true
_tmp = apply(:_TableItem2)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
items = @result
unless _tmp
self.pos = _save2
break
end
@result = begin; [item1, *items] ; end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
row = @result
break if _tmp
self.pos = _save1
_save4 = self.pos
_ary = []
_tmp = apply(:_TableItem2)
if _tmp
_ary << @result
while true
_tmp = apply(:_TableItem2)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save4
end
row = @result
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_save5 = self.pos
_tmp = match_string("|")
unless _tmp
_tmp = true
self.pos = _save5
end
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
@result = begin; row ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TableRow unless _tmp
return _tmp
end
# TableItem2 = "|" TableItem
def _TableItem2
_save = self.pos
while true # sequence
_tmp = match_string("|")
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_TableItem)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TableItem2 unless _tmp
return _tmp
end
# TableItem = < /(?:\\.|[^|\n])+/ > { text.strip.gsub(/\\(.)/, '\1') }
def _TableItem
_save = self.pos
while true # sequence
_text_start = self.pos
_tmp = scan(/\G(?-mix:(?:\\.|[^|\n])+)/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
@result = begin; text.strip.gsub(/\\(.)/, '\1') ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TableItem unless _tmp
return _tmp
end
# TableLine = ((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) "|"? @Newline { line }
def _TableLine
_save = self.pos
while true # sequence
_save1 = self.pos
while true # choice
_save2 = self.pos
while true # sequence
_tmp = apply(:_TableAlign)
align1 = @result
unless _tmp
self.pos = _save2
break
end
_ary = []
while true
_tmp = apply(:_TableAlign2)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
aligns = @result
unless _tmp
self.pos = _save2
break
end
@result = begin; [align1, *aligns] ; end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
line = @result
break if _tmp
self.pos = _save1
_save4 = self.pos
_ary = []
_tmp = apply(:_TableAlign2)
if _tmp
_ary << @result
while true
_tmp = apply(:_TableAlign2)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save4
end
line = @result
break if _tmp
self.pos = _save1
break
end # end choice
unless _tmp
self.pos = _save
break
end
_save5 = self.pos
_tmp = match_string("|")
unless _tmp
_tmp = true
self.pos = _save5
end
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
@result = begin; line ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TableLine unless _tmp
return _tmp
end
# TableAlign2 = "|" @Sp TableAlign
def _TableAlign2
_save = self.pos
while true # sequence
_tmp = match_string("|")
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_TableAlign)
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TableAlign2 unless _tmp
return _tmp
end
# TableAlign = < /:?-+:?/ > @Sp { text.start_with?(":") ? (text.end_with?(":") ? :center : :left) : (text.end_with?(":") ? :right : nil) }
def _TableAlign
_save = self.pos
while true # sequence
_text_start = self.pos
_tmp = scan(/\G(?-mix::?-+:?)/)
if _tmp
text = get_text(_text_start)
end
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
@result = begin;
text.start_with?(":") ?
(text.end_with?(":") ? :center : :left) :
(text.end_with?(":") ? :right : nil)
; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_TableAlign unless _tmp
return _tmp
end
# DefinitionList = &{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }
def _DefinitionList
_save = self.pos
while true # sequence
_save1 = self.pos
_tmp = begin; definition_lists? ; end
self.pos = _save1
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_ary = []
_tmp = apply(:_DefinitionListItem)
if _tmp
_ary << @result
while true
_tmp = apply(:_DefinitionListItem)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save2
end
list = @result
unless _tmp
self.pos = _save
break
end
@result = begin; RDoc::Markup::List.new :NOTE, *list.flatten ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_DefinitionList unless _tmp
return _tmp
end
# DefinitionListItem = DefinitionListLabel+:label DefinitionListDefinition+:defns { list_items = [] list_items << RDoc::Markup::ListItem.new(label, defns.shift) list_items.concat defns.map { |defn| RDoc::Markup::ListItem.new nil, defn } unless list_items.empty? list_items }
def _DefinitionListItem
_save = self.pos
while true # sequence
_save1 = self.pos
_ary = []
_tmp = apply(:_DefinitionListLabel)
if _tmp
_ary << @result
while true
_tmp = apply(:_DefinitionListLabel)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save1
end
label = @result
unless _tmp
self.pos = _save
break
end
_save2 = self.pos
_ary = []
_tmp = apply(:_DefinitionListDefinition)
if _tmp
_ary << @result
while true
_tmp = apply(:_DefinitionListDefinition)
_ary << @result if _tmp
break unless _tmp
end
_tmp = true
@result = _ary
else
self.pos = _save2
end
defns = @result
unless _tmp
self.pos = _save
break
end
@result = begin; list_items = []
list_items <<
RDoc::Markup::ListItem.new(label, defns.shift)
list_items.concat defns.map { |defn|
RDoc::Markup::ListItem.new nil, defn
} unless list_items.empty?
list_items
; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_DefinitionListItem unless _tmp
return _tmp
end
# DefinitionListLabel = Inline:label @Sp @Newline { label }
def _DefinitionListLabel
_save = self.pos
while true # sequence
_tmp = apply(:_Inline)
label = @result
unless _tmp
self.pos = _save
break
end
_tmp = _Sp()
unless _tmp
self.pos = _save
break
end
_tmp = _Newline()
unless _tmp
self.pos = _save
break
end
@result = begin; label ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_DefinitionListLabel unless _tmp
return _tmp
end
# DefinitionListDefinition = @NonindentSpace ":" @Space Inlines:a @BlankLine+ { paragraph a }
def _DefinitionListDefinition
_save = self.pos
while true # sequence
_tmp = _NonindentSpace()
unless _tmp
self.pos = _save
break
end
_tmp = match_string(":")
unless _tmp
self.pos = _save
break
end
_tmp = _Space()
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_Inlines)
a = @result
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = _BlankLine()
if _tmp
while true
_tmp = _BlankLine()
break unless _tmp
end
_tmp = true
else
self.pos = _save1
end
unless _tmp
self.pos = _save
break
end
@result = begin; paragraph a ; end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_DefinitionListDefinition unless _tmp
return _tmp
end
Rules = {}
Rules[:_root] = rule_info("root", "Doc")
Rules[:_Doc] = rule_info("Doc", "BOM? Block*:a { RDoc::Markup::Document.new(*a.compact) }")
Rules[:_Block] = rule_info("Block", "@BlankLine* (BlockQuote | Verbatim | CodeFence | Table | Note | Reference | HorizontalRule | Heading | OrderedList | BulletList | DefinitionList | HtmlBlock | StyleBlock | Para | Plain)")
Rules[:_Para] = rule_info("Para", "@NonindentSpace Inlines:a @BlankLine+ { paragraph a }")
Rules[:_Plain] = rule_info("Plain", "Inlines:a { paragraph a }")
Rules[:_AtxInline] = rule_info("AtxInline", "!@Newline !(@Sp /\#*/ @Sp @Newline) Inline")
Rules[:_AtxStart] = rule_info("AtxStart", "< /\\\#{1,6}/ > { text.length }")
Rules[:_AtxHeading] = rule_info("AtxHeading", "AtxStart:s @Spacechar+ AtxInline+:a (@Sp /\#*/ @Sp)? @Newline { RDoc::Markup::Heading.new(s, a.join) }")
Rules[:_SetextHeading] = rule_info("SetextHeading", "(SetextHeading1 | SetextHeading2)")
Rules[:_SetextBottom1] = rule_info("SetextBottom1", "/={1,}/ @Newline")
Rules[:_SetextBottom2] = rule_info("SetextBottom2", "/-{1,}/ @Newline")
Rules[:_SetextHeading1] = rule_info("SetextHeading1", "&(@RawLine SetextBottom1) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom1 { RDoc::Markup::Heading.new(1, a.join) }")
Rules[:_SetextHeading2] = rule_info("SetextHeading2", "&(@RawLine SetextBottom2) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom2 { RDoc::Markup::Heading.new(2, a.join) }")
Rules[:_Heading] = rule_info("Heading", "(SetextHeading | AtxHeading)")
Rules[:_BlockQuote] = rule_info("BlockQuote", "BlockQuoteRaw:a { RDoc::Markup::BlockQuote.new(*a) }")
Rules[:_BlockQuoteRaw] = rule_info("BlockQuoteRaw", "@StartList:a (\">\" \" \"? Line:l { a << l } (!\">\" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }")
Rules[:_NonblankIndentedLine] = rule_info("NonblankIndentedLine", "!@BlankLine IndentedLine")
Rules[:_VerbatimChunk] = rule_info("VerbatimChunk", "@BlankLine*:a NonblankIndentedLine+:b { a.concat b }")
Rules[:_Verbatim] = rule_info("Verbatim", "VerbatimChunk+:a { RDoc::Markup::Verbatim.new(*a.flatten) }")
Rules[:_HorizontalRule] = rule_info("HorizontalRule", "@NonindentSpace (\"*\" @Sp \"*\" @Sp \"*\" (@Sp \"*\")* | \"-\" @Sp \"-\" @Sp \"-\" (@Sp \"-\")* | \"_\" @Sp \"_\" @Sp \"_\" (@Sp \"_\")*) @Sp @Newline @BlankLine+ { RDoc::Markup::Rule.new 1 }")
Rules[:_Bullet] = rule_info("Bullet", "!HorizontalRule @NonindentSpace /[+*-]/ @Spacechar+")
Rules[:_BulletList] = rule_info("BulletList", "&Bullet (ListTight | ListLoose):a { RDoc::Markup::List.new(:BULLET, *a) }")
Rules[:_ListTight] = rule_info("ListTight", "ListItemTight+:a @BlankLine* !(Bullet | Enumerator) { a }")
Rules[:_ListLoose] = rule_info("ListLoose", "@StartList:a (ListItem:b @BlankLine* { a << b })+ { a }")
Rules[:_ListItem] = rule_info("ListItem", "(Bullet | Enumerator) @StartList:a ListBlock:b { a << b } (ListContinuationBlock:c { a.push(*c) })* { list_item_from a }")
Rules[:_ListItemTight] = rule_info("ListItemTight", "(Bullet | Enumerator) ListBlock:a (!@BlankLine ListContinuationBlock:b { a.push(*b) })* !ListContinuationBlock { list_item_from a }")
Rules[:_ListBlock] = rule_info("ListBlock", "!@BlankLine Line:a ListBlockLine*:c { [a, *c] }")
Rules[:_ListContinuationBlock] = rule_info("ListContinuationBlock", "@StartList:a @BlankLine* { a << \"\\n\" } (Indent ListBlock:b { a.concat b })+ { a }")
Rules[:_Enumerator] = rule_info("Enumerator", "@NonindentSpace [0-9]+ \".\" @Spacechar+")
Rules[:_OrderedList] = rule_info("OrderedList", "&Enumerator (ListTight | ListLoose):a { RDoc::Markup::List.new(:NUMBER, *a) }")
Rules[:_ListBlockLine] = rule_info("ListBlockLine", "!@BlankLine !(Indent? (Bullet | Enumerator)) !HorizontalRule OptionallyIndentedLine")
Rules[:_HtmlOpenAnchor] = rule_info("HtmlOpenAnchor", "\"<\" Spnl (\"a\" | \"A\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlCloseAnchor] = rule_info("HtmlCloseAnchor", "\"<\" Spnl \"/\" (\"a\" | \"A\") Spnl \">\"")
Rules[:_HtmlAnchor] = rule_info("HtmlAnchor", "HtmlOpenAnchor (HtmlAnchor | !HtmlCloseAnchor .)* HtmlCloseAnchor")
Rules[:_HtmlBlockOpenAddress] = rule_info("HtmlBlockOpenAddress", "\"<\" Spnl (\"address\" | \"ADDRESS\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseAddress] = rule_info("HtmlBlockCloseAddress", "\"<\" Spnl \"/\" (\"address\" | \"ADDRESS\") Spnl \">\"")
Rules[:_HtmlBlockAddress] = rule_info("HtmlBlockAddress", "HtmlBlockOpenAddress (HtmlBlockAddress | !HtmlBlockCloseAddress .)* HtmlBlockCloseAddress")
Rules[:_HtmlBlockOpenBlockquote] = rule_info("HtmlBlockOpenBlockquote", "\"<\" Spnl (\"blockquote\" | \"BLOCKQUOTE\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseBlockquote] = rule_info("HtmlBlockCloseBlockquote", "\"<\" Spnl \"/\" (\"blockquote\" | \"BLOCKQUOTE\") Spnl \">\"")
Rules[:_HtmlBlockBlockquote] = rule_info("HtmlBlockBlockquote", "HtmlBlockOpenBlockquote (HtmlBlockBlockquote | !HtmlBlockCloseBlockquote .)* HtmlBlockCloseBlockquote")
Rules[:_HtmlBlockOpenCenter] = rule_info("HtmlBlockOpenCenter", "\"<\" Spnl (\"center\" | \"CENTER\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseCenter] = rule_info("HtmlBlockCloseCenter", "\"<\" Spnl \"/\" (\"center\" | \"CENTER\") Spnl \">\"")
Rules[:_HtmlBlockCenter] = rule_info("HtmlBlockCenter", "HtmlBlockOpenCenter (HtmlBlockCenter | !HtmlBlockCloseCenter .)* HtmlBlockCloseCenter")
Rules[:_HtmlBlockOpenDir] = rule_info("HtmlBlockOpenDir", "\"<\" Spnl (\"dir\" | \"DIR\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseDir] = rule_info("HtmlBlockCloseDir", "\"<\" Spnl \"/\" (\"dir\" | \"DIR\") Spnl \">\"")
Rules[:_HtmlBlockDir] = rule_info("HtmlBlockDir", "HtmlBlockOpenDir (HtmlBlockDir | !HtmlBlockCloseDir .)* HtmlBlockCloseDir")
Rules[:_HtmlBlockOpenDiv] = rule_info("HtmlBlockOpenDiv", "\"<\" Spnl (\"div\" | \"DIV\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseDiv] = rule_info("HtmlBlockCloseDiv", "\"<\" Spnl \"/\" (\"div\" | \"DIV\") Spnl \">\"")
Rules[:_HtmlBlockDiv] = rule_info("HtmlBlockDiv", "HtmlBlockOpenDiv (HtmlBlockDiv | !HtmlBlockCloseDiv .)* HtmlBlockCloseDiv")
Rules[:_HtmlBlockOpenDl] = rule_info("HtmlBlockOpenDl", "\"<\" Spnl (\"dl\" | \"DL\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseDl] = rule_info("HtmlBlockCloseDl", "\"<\" Spnl \"/\" (\"dl\" | \"DL\") Spnl \">\"")
Rules[:_HtmlBlockDl] = rule_info("HtmlBlockDl", "HtmlBlockOpenDl (HtmlBlockDl | !HtmlBlockCloseDl .)* HtmlBlockCloseDl")
Rules[:_HtmlBlockOpenFieldset] = rule_info("HtmlBlockOpenFieldset", "\"<\" Spnl (\"fieldset\" | \"FIELDSET\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseFieldset] = rule_info("HtmlBlockCloseFieldset", "\"<\" Spnl \"/\" (\"fieldset\" | \"FIELDSET\") Spnl \">\"")
Rules[:_HtmlBlockFieldset] = rule_info("HtmlBlockFieldset", "HtmlBlockOpenFieldset (HtmlBlockFieldset | !HtmlBlockCloseFieldset .)* HtmlBlockCloseFieldset")
Rules[:_HtmlBlockOpenForm] = rule_info("HtmlBlockOpenForm", "\"<\" Spnl (\"form\" | \"FORM\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseForm] = rule_info("HtmlBlockCloseForm", "\"<\" Spnl \"/\" (\"form\" | \"FORM\") Spnl \">\"")
Rules[:_HtmlBlockForm] = rule_info("HtmlBlockForm", "HtmlBlockOpenForm (HtmlBlockForm | !HtmlBlockCloseForm .)* HtmlBlockCloseForm")
Rules[:_HtmlBlockOpenH1] = rule_info("HtmlBlockOpenH1", "\"<\" Spnl (\"h1\" | \"H1\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseH1] = rule_info("HtmlBlockCloseH1", "\"<\" Spnl \"/\" (\"h1\" | \"H1\") Spnl \">\"")
Rules[:_HtmlBlockH1] = rule_info("HtmlBlockH1", "HtmlBlockOpenH1 (HtmlBlockH1 | !HtmlBlockCloseH1 .)* HtmlBlockCloseH1")
Rules[:_HtmlBlockOpenH2] = rule_info("HtmlBlockOpenH2", "\"<\" Spnl (\"h2\" | \"H2\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseH2] = rule_info("HtmlBlockCloseH2", "\"<\" Spnl \"/\" (\"h2\" | \"H2\") Spnl \">\"")
Rules[:_HtmlBlockH2] = rule_info("HtmlBlockH2", "HtmlBlockOpenH2 (HtmlBlockH2 | !HtmlBlockCloseH2 .)* HtmlBlockCloseH2")
Rules[:_HtmlBlockOpenH3] = rule_info("HtmlBlockOpenH3", "\"<\" Spnl (\"h3\" | \"H3\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseH3] = rule_info("HtmlBlockCloseH3", "\"<\" Spnl \"/\" (\"h3\" | \"H3\") Spnl \">\"")
Rules[:_HtmlBlockH3] = rule_info("HtmlBlockH3", "HtmlBlockOpenH3 (HtmlBlockH3 | !HtmlBlockCloseH3 .)* HtmlBlockCloseH3")
Rules[:_HtmlBlockOpenH4] = rule_info("HtmlBlockOpenH4", "\"<\" Spnl (\"h4\" | \"H4\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseH4] = rule_info("HtmlBlockCloseH4", "\"<\" Spnl \"/\" (\"h4\" | \"H4\") Spnl \">\"")
Rules[:_HtmlBlockH4] = rule_info("HtmlBlockH4", "HtmlBlockOpenH4 (HtmlBlockH4 | !HtmlBlockCloseH4 .)* HtmlBlockCloseH4")
Rules[:_HtmlBlockOpenH5] = rule_info("HtmlBlockOpenH5", "\"<\" Spnl (\"h5\" | \"H5\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseH5] = rule_info("HtmlBlockCloseH5", "\"<\" Spnl \"/\" (\"h5\" | \"H5\") Spnl \">\"")
Rules[:_HtmlBlockH5] = rule_info("HtmlBlockH5", "HtmlBlockOpenH5 (HtmlBlockH5 | !HtmlBlockCloseH5 .)* HtmlBlockCloseH5")
Rules[:_HtmlBlockOpenH6] = rule_info("HtmlBlockOpenH6", "\"<\" Spnl (\"h6\" | \"H6\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseH6] = rule_info("HtmlBlockCloseH6", "\"<\" Spnl \"/\" (\"h6\" | \"H6\") Spnl \">\"")
Rules[:_HtmlBlockH6] = rule_info("HtmlBlockH6", "HtmlBlockOpenH6 (HtmlBlockH6 | !HtmlBlockCloseH6 .)* HtmlBlockCloseH6")
Rules[:_HtmlBlockOpenMenu] = rule_info("HtmlBlockOpenMenu", "\"<\" Spnl (\"menu\" | \"MENU\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseMenu] = rule_info("HtmlBlockCloseMenu", "\"<\" Spnl \"/\" (\"menu\" | \"MENU\") Spnl \">\"")
Rules[:_HtmlBlockMenu] = rule_info("HtmlBlockMenu", "HtmlBlockOpenMenu (HtmlBlockMenu | !HtmlBlockCloseMenu .)* HtmlBlockCloseMenu")
Rules[:_HtmlBlockOpenNoframes] = rule_info("HtmlBlockOpenNoframes", "\"<\" Spnl (\"noframes\" | \"NOFRAMES\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseNoframes] = rule_info("HtmlBlockCloseNoframes", "\"<\" Spnl \"/\" (\"noframes\" | \"NOFRAMES\") Spnl \">\"")
Rules[:_HtmlBlockNoframes] = rule_info("HtmlBlockNoframes", "HtmlBlockOpenNoframes (HtmlBlockNoframes | !HtmlBlockCloseNoframes .)* HtmlBlockCloseNoframes")
Rules[:_HtmlBlockOpenNoscript] = rule_info("HtmlBlockOpenNoscript", "\"<\" Spnl (\"noscript\" | \"NOSCRIPT\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseNoscript] = rule_info("HtmlBlockCloseNoscript", "\"<\" Spnl \"/\" (\"noscript\" | \"NOSCRIPT\") Spnl \">\"")
Rules[:_HtmlBlockNoscript] = rule_info("HtmlBlockNoscript", "HtmlBlockOpenNoscript (HtmlBlockNoscript | !HtmlBlockCloseNoscript .)* HtmlBlockCloseNoscript")
Rules[:_HtmlBlockOpenOl] = rule_info("HtmlBlockOpenOl", "\"<\" Spnl (\"ol\" | \"OL\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseOl] = rule_info("HtmlBlockCloseOl", "\"<\" Spnl \"/\" (\"ol\" | \"OL\") Spnl \">\"")
Rules[:_HtmlBlockOl] = rule_info("HtmlBlockOl", "HtmlBlockOpenOl (HtmlBlockOl | !HtmlBlockCloseOl .)* HtmlBlockCloseOl")
Rules[:_HtmlBlockOpenP] = rule_info("HtmlBlockOpenP", "\"<\" Spnl (\"p\" | \"P\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseP] = rule_info("HtmlBlockCloseP", "\"<\" Spnl \"/\" (\"p\" | \"P\") Spnl \">\"")
Rules[:_HtmlBlockP] = rule_info("HtmlBlockP", "HtmlBlockOpenP (HtmlBlockP | !HtmlBlockCloseP .)* HtmlBlockCloseP")
Rules[:_HtmlBlockOpenPre] = rule_info("HtmlBlockOpenPre", "\"<\" Spnl (\"pre\" | \"PRE\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockClosePre] = rule_info("HtmlBlockClosePre", "\"<\" Spnl \"/\" (\"pre\" | \"PRE\") Spnl \">\"")
Rules[:_HtmlBlockPre] = rule_info("HtmlBlockPre", "HtmlBlockOpenPre (HtmlBlockPre | !HtmlBlockClosePre .)* HtmlBlockClosePre")
Rules[:_HtmlBlockOpenTable] = rule_info("HtmlBlockOpenTable", "\"<\" Spnl (\"table\" | \"TABLE\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseTable] = rule_info("HtmlBlockCloseTable", "\"<\" Spnl \"/\" (\"table\" | \"TABLE\") Spnl \">\"")
Rules[:_HtmlBlockTable] = rule_info("HtmlBlockTable", "HtmlBlockOpenTable (HtmlBlockTable | !HtmlBlockCloseTable .)* HtmlBlockCloseTable")
Rules[:_HtmlBlockOpenUl] = rule_info("HtmlBlockOpenUl", "\"<\" Spnl (\"ul\" | \"UL\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseUl] = rule_info("HtmlBlockCloseUl", "\"<\" Spnl \"/\" (\"ul\" | \"UL\") Spnl \">\"")
Rules[:_HtmlBlockUl] = rule_info("HtmlBlockUl", "HtmlBlockOpenUl (HtmlBlockUl | !HtmlBlockCloseUl .)* HtmlBlockCloseUl")
Rules[:_HtmlBlockOpenDd] = rule_info("HtmlBlockOpenDd", "\"<\" Spnl (\"dd\" | \"DD\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseDd] = rule_info("HtmlBlockCloseDd", "\"<\" Spnl \"/\" (\"dd\" | \"DD\") Spnl \">\"")
Rules[:_HtmlBlockDd] = rule_info("HtmlBlockDd", "HtmlBlockOpenDd (HtmlBlockDd | !HtmlBlockCloseDd .)* HtmlBlockCloseDd")
Rules[:_HtmlBlockOpenDt] = rule_info("HtmlBlockOpenDt", "\"<\" Spnl (\"dt\" | \"DT\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseDt] = rule_info("HtmlBlockCloseDt", "\"<\" Spnl \"/\" (\"dt\" | \"DT\") Spnl \">\"")
Rules[:_HtmlBlockDt] = rule_info("HtmlBlockDt", "HtmlBlockOpenDt (HtmlBlockDt | !HtmlBlockCloseDt .)* HtmlBlockCloseDt")
Rules[:_HtmlBlockOpenFrameset] = rule_info("HtmlBlockOpenFrameset", "\"<\" Spnl (\"frameset\" | \"FRAMESET\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseFrameset] = rule_info("HtmlBlockCloseFrameset", "\"<\" Spnl \"/\" (\"frameset\" | \"FRAMESET\") Spnl \">\"")
Rules[:_HtmlBlockFrameset] = rule_info("HtmlBlockFrameset", "HtmlBlockOpenFrameset (HtmlBlockFrameset | !HtmlBlockCloseFrameset .)* HtmlBlockCloseFrameset")
Rules[:_HtmlBlockOpenLi] = rule_info("HtmlBlockOpenLi", "\"<\" Spnl (\"li\" | \"LI\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseLi] = rule_info("HtmlBlockCloseLi", "\"<\" Spnl \"/\" (\"li\" | \"LI\") Spnl \">\"")
Rules[:_HtmlBlockLi] = rule_info("HtmlBlockLi", "HtmlBlockOpenLi (HtmlBlockLi | !HtmlBlockCloseLi .)* HtmlBlockCloseLi")
Rules[:_HtmlBlockOpenTbody] = rule_info("HtmlBlockOpenTbody", "\"<\" Spnl (\"tbody\" | \"TBODY\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseTbody] = rule_info("HtmlBlockCloseTbody", "\"<\" Spnl \"/\" (\"tbody\" | \"TBODY\") Spnl \">\"")
Rules[:_HtmlBlockTbody] = rule_info("HtmlBlockTbody", "HtmlBlockOpenTbody (HtmlBlockTbody | !HtmlBlockCloseTbody .)* HtmlBlockCloseTbody")
Rules[:_HtmlBlockOpenTd] = rule_info("HtmlBlockOpenTd", "\"<\" Spnl (\"td\" | \"TD\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseTd] = rule_info("HtmlBlockCloseTd", "\"<\" Spnl \"/\" (\"td\" | \"TD\") Spnl \">\"")
Rules[:_HtmlBlockTd] = rule_info("HtmlBlockTd", "HtmlBlockOpenTd (HtmlBlockTd | !HtmlBlockCloseTd .)* HtmlBlockCloseTd")
Rules[:_HtmlBlockOpenTfoot] = rule_info("HtmlBlockOpenTfoot", "\"<\" Spnl (\"tfoot\" | \"TFOOT\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseTfoot] = rule_info("HtmlBlockCloseTfoot", "\"<\" Spnl \"/\" (\"tfoot\" | \"TFOOT\") Spnl \">\"")
Rules[:_HtmlBlockTfoot] = rule_info("HtmlBlockTfoot", "HtmlBlockOpenTfoot (HtmlBlockTfoot | !HtmlBlockCloseTfoot .)* HtmlBlockCloseTfoot")
Rules[:_HtmlBlockOpenTh] = rule_info("HtmlBlockOpenTh", "\"<\" Spnl (\"th\" | \"TH\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseTh] = rule_info("HtmlBlockCloseTh", "\"<\" Spnl \"/\" (\"th\" | \"TH\") Spnl \">\"")
Rules[:_HtmlBlockTh] = rule_info("HtmlBlockTh", "HtmlBlockOpenTh (HtmlBlockTh | !HtmlBlockCloseTh .)* HtmlBlockCloseTh")
Rules[:_HtmlBlockOpenThead] = rule_info("HtmlBlockOpenThead", "\"<\" Spnl (\"thead\" | \"THEAD\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseThead] = rule_info("HtmlBlockCloseThead", "\"<\" Spnl \"/\" (\"thead\" | \"THEAD\") Spnl \">\"")
Rules[:_HtmlBlockThead] = rule_info("HtmlBlockThead", "HtmlBlockOpenThead (HtmlBlockThead | !HtmlBlockCloseThead .)* HtmlBlockCloseThead")
Rules[:_HtmlBlockOpenTr] = rule_info("HtmlBlockOpenTr", "\"<\" Spnl (\"tr\" | \"TR\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseTr] = rule_info("HtmlBlockCloseTr", "\"<\" Spnl \"/\" (\"tr\" | \"TR\") Spnl \">\"")
Rules[:_HtmlBlockTr] = rule_info("HtmlBlockTr", "HtmlBlockOpenTr (HtmlBlockTr | !HtmlBlockCloseTr .)* HtmlBlockCloseTr")
Rules[:_HtmlBlockOpenScript] = rule_info("HtmlBlockOpenScript", "\"<\" Spnl (\"script\" | \"SCRIPT\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseScript] = rule_info("HtmlBlockCloseScript", "\"<\" Spnl \"/\" (\"script\" | \"SCRIPT\") Spnl \">\"")
Rules[:_HtmlBlockScript] = rule_info("HtmlBlockScript", "HtmlBlockOpenScript (!HtmlBlockCloseScript .)* HtmlBlockCloseScript")
Rules[:_HtmlBlockOpenHead] = rule_info("HtmlBlockOpenHead", "\"<\" Spnl (\"head\" | \"HEAD\") Spnl HtmlAttribute* \">\"")
Rules[:_HtmlBlockCloseHead] = rule_info("HtmlBlockCloseHead", "\"<\" Spnl \"/\" (\"head\" | \"HEAD\") Spnl \">\"")
Rules[:_HtmlBlockHead] = rule_info("HtmlBlockHead", "HtmlBlockOpenHead (!HtmlBlockCloseHead .)* HtmlBlockCloseHead")
Rules[:_HtmlBlockInTags] = rule_info("HtmlBlockInTags", "(HtmlAnchor | HtmlBlockAddress | HtmlBlockBlockquote | HtmlBlockCenter | HtmlBlockDir | HtmlBlockDiv | HtmlBlockDl | HtmlBlockFieldset | HtmlBlockForm | HtmlBlockH1 | HtmlBlockH2 | HtmlBlockH3 | HtmlBlockH4 | HtmlBlockH5 | HtmlBlockH6 | HtmlBlockMenu | HtmlBlockNoframes | HtmlBlockNoscript | HtmlBlockOl | HtmlBlockP | HtmlBlockPre | HtmlBlockTable | HtmlBlockUl | HtmlBlockDd | HtmlBlockDt | HtmlBlockFrameset | HtmlBlockLi | HtmlBlockTbody | HtmlBlockTd | HtmlBlockTfoot | HtmlBlockTh | HtmlBlockThead | HtmlBlockTr | HtmlBlockScript | HtmlBlockHead)")
Rules[:_HtmlBlock] = rule_info("HtmlBlock", "< (HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) > @BlankLine+ { if html? then RDoc::Markup::Raw.new text end }")
Rules[:_HtmlUnclosed] = rule_info("HtmlUnclosed", "\"<\" Spnl HtmlUnclosedType Spnl HtmlAttribute* Spnl \">\"")
Rules[:_HtmlUnclosedType] = rule_info("HtmlUnclosedType", "(\"HR\" | \"hr\")")
Rules[:_HtmlBlockSelfClosing] = rule_info("HtmlBlockSelfClosing", "\"<\" Spnl HtmlBlockType Spnl HtmlAttribute* \"/\" Spnl \">\"")
Rules[:_HtmlBlockType] = rule_info("HtmlBlockType", "(\"ADDRESS\" | \"BLOCKQUOTE\" | \"CENTER\" | \"DD\" | \"DIR\" | \"DIV\" | \"DL\" | \"DT\" | \"FIELDSET\" | \"FORM\" | \"FRAMESET\" | \"H1\" | \"H2\" | \"H3\" | \"H4\" | \"H5\" | \"H6\" | \"HR\" | \"ISINDEX\" | \"LI\" | \"MENU\" | \"NOFRAMES\" | \"NOSCRIPT\" | \"OL\" | \"P\" | \"PRE\" | \"SCRIPT\" | \"TABLE\" | \"TBODY\" | \"TD\" | \"TFOOT\" | \"TH\" | \"THEAD\" | \"TR\" | \"UL\" | \"address\" | \"blockquote\" | \"center\" | \"dd\" | \"dir\" | \"div\" | \"dl\" | \"dt\" | \"fieldset\" | \"form\" | \"frameset\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"hr\" | \"isindex\" | \"li\" | \"menu\" | \"noframes\" | \"noscript\" | \"ol\" | \"p\" | \"pre\" | \"script\" | \"table\" | \"tbody\" | \"td\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"ul\")")
Rules[:_StyleOpen] = rule_info("StyleOpen", "\"<\" Spnl (\"style\" | \"STYLE\") Spnl HtmlAttribute* \">\"")
Rules[:_StyleClose] = rule_info("StyleClose", "\"<\" Spnl \"/\" (\"style\" | \"STYLE\") Spnl \">\"")
Rules[:_InStyleTags] = rule_info("InStyleTags", "StyleOpen (!StyleClose .)* StyleClose")
Rules[:_StyleBlock] = rule_info("StyleBlock", "< InStyleTags > @BlankLine* { if css? then RDoc::Markup::Raw.new text end }")
Rules[:_Inlines] = rule_info("Inlines", "(!@Endline Inline:i { i } | @Endline:c !(&{ github? } Ticks3 /[^`\\n]*$/) &Inline { c })+:chunks @Endline? { chunks }")
Rules[:_Inline] = rule_info("Inline", "(Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | Entity | EscapedChar | Symbol)")
Rules[:_Space] = rule_info("Space", "@Spacechar+ { \" \" }")
Rules[:_Str] = rule_info("Str", "@StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { a }")
Rules[:_StrChunk] = rule_info("StrChunk", "< (@NormalChar | /_+/ &Alphanumeric)+ > { text }")
Rules[:_EscapedChar] = rule_info("EscapedChar", "\"\\\\\" !@Newline < /[:\\\\`|*_{}\\[\\]()\#+.!><-]/ > { text }")
Rules[:_Entity] = rule_info("Entity", "(HexEntity | DecEntity | CharEntity):a { a }")
Rules[:_Endline] = rule_info("Endline", "(@LineBreak | @TerminalEndline | @NormalEndline)")
Rules[:_NormalEndline] = rule_info("NormalEndline", "@Sp @Newline !@BlankLine !\">\" !AtxStart !(Line /={1,}|-{1,}/ @Newline) { \"\\n\" }")
Rules[:_TerminalEndline] = rule_info("TerminalEndline", "@Sp @Newline @Eof")
Rules[:_LineBreak] = rule_info("LineBreak", "\" \" @NormalEndline { RDoc::Markup::HardBreak.new }")
Rules[:_Symbol] = rule_info("Symbol", "< @SpecialChar > { text }")
Rules[:_UlOrStarLine] = rule_info("UlOrStarLine", "(UlLine | StarLine):a { a }")
Rules[:_StarLine] = rule_info("StarLine", "(< /\\*{4,}/ > { text } | < @Spacechar /\\*+/ &@Spacechar > { text })")
Rules[:_UlLine] = rule_info("UlLine", "(< /_{4,}/ > { text } | < @Spacechar /_+/ &@Spacechar > { text })")
Rules[:_Emph] = rule_info("Emph", "(EmphStar | EmphUl)")
Rules[:_Whitespace] = rule_info("Whitespace", "(@Spacechar | @Newline)")
Rules[:_EmphStar] = rule_info("EmphStar", "\"*\" !@Whitespace @StartList:a (!\"*\" Inline:b { a << b } | StrongStar:b { a << b })+ \"*\" { emphasis a.join }")
Rules[:_EmphUl] = rule_info("EmphUl", "\"_\" !@Whitespace @StartList:a (!\"_\" Inline:b { a << b } | StrongUl:b { a << b })+ \"_\" { emphasis a.join }")
Rules[:_Strong] = rule_info("Strong", "(StrongStar | StrongUl)")
Rules[:_StrongStar] = rule_info("StrongStar", "\"**\" !@Whitespace @StartList:a (!\"**\" Inline:b { a << b })+ \"**\" { strong a.join }")
Rules[:_StrongUl] = rule_info("StrongUl", "\"__\" !@Whitespace @StartList:a (!\"__\" Inline:b { a << b })+ \"__\" { strong a.join }")
Rules[:_Strike] = rule_info("Strike", "&{ strike? } \"~~\" !@Whitespace @StartList:a (!\"~~\" Inline:b { a << b })+ \"~~\" { strike a.join }")
Rules[:_Image] = rule_info("Image", "\"!\" (ExplicitLink | ReferenceLink):a { \"rdoc-image:\#{a[/\\[(.*)\\]/, 1]}\" }")
Rules[:_Link] = rule_info("Link", "(ExplicitLink | ReferenceLink | AutoLink)")
Rules[:_ReferenceLink] = rule_info("ReferenceLink", "(ReferenceLinkDouble | ReferenceLinkSingle)")
Rules[:_ReferenceLinkDouble] = rule_info("ReferenceLinkDouble", "Label:content < Spnl > !\"[]\" Label:label { link_to content, label, text }")
Rules[:_ReferenceLinkSingle] = rule_info("ReferenceLinkSingle", "Label:content < (Spnl \"[]\")? > { link_to content, content, text }")
Rules[:_ExplicitLink] = rule_info("ExplicitLink", "Label:l \"(\" @Sp Source:s Spnl Title @Sp \")\" { \"{\#{l}}[\#{s}]\" }")
Rules[:_Source] = rule_info("Source", "(\"<\" < SourceContents > \">\" | < SourceContents >) { text }")
Rules[:_SourceContents] = rule_info("SourceContents", "((!\"(\" !\")\" !\">\" Nonspacechar)+ | \"(\" SourceContents \")\")*")
Rules[:_Title] = rule_info("Title", "(TitleSingle | TitleDouble | \"\"):a { a }")
Rules[:_TitleSingle] = rule_info("TitleSingle", "\"'\" (!(\"'\" @Sp (\")\" | @Newline)) .)* \"'\"")
Rules[:_TitleDouble] = rule_info("TitleDouble", "\"\\\"\" (!(\"\\\"\" @Sp (\")\" | @Newline)) .)* \"\\\"\"")
Rules[:_AutoLink] = rule_info("AutoLink", "(AutoLinkUrl | AutoLinkEmail)")
Rules[:_AutoLinkUrl] = rule_info("AutoLinkUrl", "\"<\" < /[A-Za-z]+/ \"://\" (!@Newline !\">\" .)+ > \">\" { text }")
Rules[:_AutoLinkEmail] = rule_info("AutoLinkEmail", "\"<\" \"mailto:\"? < /[\\w+.\\/!%~$-]+/i \"@\" (!@Newline !\">\" .)+ > \">\" { \"mailto:\#{text}\" }")
Rules[:_Reference] = rule_info("Reference", "@NonindentSpace !\"[]\" Label:label \":\" Spnl RefSrc:link RefTitle @BlankLine+ { \# TODO use title reference label, link nil }")
Rules[:_Label] = rule_info("Label", "\"[\" (!\"^\" &{ notes? } | &. &{ !notes? }) @StartList:a (!\"]\" Inline:l { a << l })* \"]\" { a.join.gsub(/\\s+/, ' ') }")
Rules[:_RefSrc] = rule_info("RefSrc", "< Nonspacechar+ > { text }")
Rules[:_RefTitle] = rule_info("RefTitle", "(RefTitleSingle | RefTitleDouble | RefTitleParens | EmptyTitle)")
Rules[:_EmptyTitle] = rule_info("EmptyTitle", "\"\"")
Rules[:_RefTitleSingle] = rule_info("RefTitleSingle", "Spnl \"'\" < (!(\"'\" @Sp @Newline | @Newline) .)* > \"'\" { text }")
Rules[:_RefTitleDouble] = rule_info("RefTitleDouble", "Spnl \"\\\"\" < (!(\"\\\"\" @Sp @Newline | @Newline) .)* > \"\\\"\" { text }")
Rules[:_RefTitleParens] = rule_info("RefTitleParens", "Spnl \"(\" < (!(\")\" @Sp @Newline | @Newline) .)* > \")\" { text }")
Rules[:_References] = rule_info("References", "(Reference | SkipBlock)*")
Rules[:_Ticks1] = rule_info("Ticks1", "\"`\" !\"`\"")
Rules[:_Ticks2] = rule_info("Ticks2", "\"``\" !\"`\"")
Rules[:_Ticks3] = rule_info("Ticks3", "\"```\" !\"`\"")
Rules[:_Ticks4] = rule_info("Ticks4", "\"````\" !\"`\"")
Rules[:_Ticks5] = rule_info("Ticks5", "\"`````\" !\"`\"")
Rules[:_Code] = rule_info("Code", "(Ticks1 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks1 /`+/ | !(@Sp Ticks1) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks1 | Ticks2 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks2 /`+/ | !(@Sp Ticks2) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks2 | Ticks3 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | !(@Sp Ticks3) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks3 | Ticks4 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks4 /`+/ | !(@Sp Ticks4) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks4 | Ticks5 @Sp < ((!\"`\" Nonspacechar)+ | !Ticks5 /`+/ | !(@Sp Ticks5) (@Spacechar | @Newline !@BlankLine))+ > @Sp Ticks5) { \"<code>\#{text}</code>\" }")
Rules[:_RawHtml] = rule_info("RawHtml", "< (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end }")
Rules[:_BlankLine] = rule_info("BlankLine", "@Sp @Newline { \"\\n\" }")
Rules[:_Quoted] = rule_info("Quoted", "(\"\\\"\" (!\"\\\"\" .)* \"\\\"\" | \"'\" (!\"'\" .)* \"'\")")
Rules[:_HtmlAttribute] = rule_info("HtmlAttribute", "(AlphanumericAscii | \"-\")+ Spnl (\"=\" Spnl (Quoted | (!\">\" Nonspacechar)+))? Spnl")
Rules[:_HtmlComment] = rule_info("HtmlComment", "\"<!--\" (!\"-->\" .)* \"-->\"")
Rules[:_HtmlTag] = rule_info("HtmlTag", "\"<\" Spnl \"/\"? AlphanumericAscii+ Spnl HtmlAttribute* \"/\"? Spnl \">\"")
Rules[:_Eof] = rule_info("Eof", "!.")
Rules[:_Nonspacechar] = rule_info("Nonspacechar", "!@Spacechar !@Newline .")
Rules[:_Sp] = rule_info("Sp", "@Spacechar*")
Rules[:_Spnl] = rule_info("Spnl", "@Sp (@Newline @Sp)?")
Rules[:_SpecialChar] = rule_info("SpecialChar", "(/[~*_`&\\[\\]()<!\#\\\\'\"]/ | @ExtendedSpecialChar)")
Rules[:_NormalChar] = rule_info("NormalChar", "!(@SpecialChar | @Spacechar | @Newline) .")
Rules[:_Digit] = rule_info("Digit", "[0-9]")
Rules[:_Alphanumeric] = rule_info("Alphanumeric", "%literals.Alphanumeric")
Rules[:_AlphanumericAscii] = rule_info("AlphanumericAscii", "%literals.AlphanumericAscii")
Rules[:_BOM] = rule_info("BOM", "%literals.BOM")
Rules[:_Newline] = rule_info("Newline", "%literals.Newline")
Rules[:_Spacechar] = rule_info("Spacechar", "%literals.Spacechar")
Rules[:_HexEntity] = rule_info("HexEntity", "/&\#x/i < /[0-9a-fA-F]+/ > \";\" { [text.to_i(16)].pack 'U' }")
Rules[:_DecEntity] = rule_info("DecEntity", "\"&\#\" < /[0-9]+/ > \";\" { [text.to_i].pack 'U' }")
Rules[:_CharEntity] = rule_info("CharEntity", "\"&\" < /[A-Za-z0-9]+/ > \";\" { if entity = HTML_ENTITIES[text] then entity.pack 'U*' else \"&\#{text};\" end }")
Rules[:_NonindentSpace] = rule_info("NonindentSpace", "/ {0,3}/")
Rules[:_Indent] = rule_info("Indent", "/\\t| /")
Rules[:_IndentedLine] = rule_info("IndentedLine", "Indent Line")
Rules[:_OptionallyIndentedLine] = rule_info("OptionallyIndentedLine", "Indent? Line")
Rules[:_StartList] = rule_info("StartList", "&. { [] }")
Rules[:_Line] = rule_info("Line", "@RawLine:a { a }")
Rules[:_RawLine] = rule_info("RawLine", "(< /[^\\r\\n]*/ @Newline > | < .+ > @Eof) { text }")
Rules[:_SkipBlock] = rule_info("SkipBlock", "(HtmlBlock | (!\"\#\" !SetextBottom1 !SetextBottom2 !@BlankLine @RawLine)+ @BlankLine* | @BlankLine+ | @RawLine)")
Rules[:_ExtendedSpecialChar] = rule_info("ExtendedSpecialChar", "&{ notes? } \"^\"")
Rules[:_NoteReference] = rule_info("NoteReference", "&{ notes? } RawNoteReference:ref { note_for ref }")
Rules[:_RawNoteReference] = rule_info("RawNoteReference", "\"[^\" < (!@Newline !\"]\" .)+ > \"]\" { text }")
Rules[:_Note] = rule_info("Note", "&{ notes? } @NonindentSpace RawNoteReference:ref \":\" @Sp @StartList:a RawNoteBlock:i { a.concat i } (&Indent RawNoteBlock:i { a.concat i })* { @footnotes[ref] = paragraph a nil }")
Rules[:_InlineNote] = rule_info("InlineNote", "&{ notes? } \"^[\" @StartList:a (!\"]\" Inline:l { a << l })+ \"]\" { ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref }")
Rules[:_Notes] = rule_info("Notes", "(Note | SkipBlock)*")
Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
Rules[:_CodeFence] = rule_info("CodeFence", "&{ github? } Ticks3 (@Sp StrChunk:format)? Spnl < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text verbatim.format = format.intern if format.instance_of?(String) verbatim }")
Rules[:_Table] = rule_info("Table", "&{ github? } TableHead:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) }")
Rules[:_TableHead] = rule_info("TableHead", "TableItem2+:items \"|\"? @Newline { items }")
Rules[:_TableRow] = rule_info("TableRow", "((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) \"|\"? @Newline { row }")
Rules[:_TableItem2] = rule_info("TableItem2", "\"|\" TableItem")
Rules[:_TableItem] = rule_info("TableItem", "< /(?:\\\\.|[^|\\n])+/ > { text.strip.gsub(/\\\\(.)/, '\\1') }")
Rules[:_TableLine] = rule_info("TableLine", "((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) \"|\"? @Newline { line }")
Rules[:_TableAlign2] = rule_info("TableAlign2", "\"|\" @Sp TableAlign")
Rules[:_TableAlign] = rule_info("TableAlign", "< /:?-+:?/ > @Sp { text.start_with?(\":\") ? (text.end_with?(\":\") ? :center : :left) : (text.end_with?(\":\") ? :right : nil) }")
Rules[:_DefinitionList] = rule_info("DefinitionList", "&{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }")
Rules[:_DefinitionListItem] = rule_info("DefinitionListItem", "DefinitionListLabel+:label DefinitionListDefinition+:defns { list_items = [] list_items << RDoc::Markup::ListItem.new(label, defns.shift) list_items.concat defns.map { |defn| RDoc::Markup::ListItem.new nil, defn } unless list_items.empty? list_items }")
Rules[:_DefinitionListLabel] = rule_info("DefinitionListLabel", "Inline:label @Sp @Newline { label }")
Rules[:_DefinitionListDefinition] = rule_info("DefinitionListDefinition", "@NonindentSpace \":\" @Space Inlines:a @BlankLine+ { paragraph a }")
# :startdoc:
end