class Gammo::Parser::InsertionMode
Attributes
parser[R]
Public Class Methods
new(parser)
click to toggle source
# File lib/gammo/parser/insertion_mode.rb, line 8 def initialize(parser) @parser = parser end
Public Instance Methods
process()
click to toggle source
# File lib/gammo/parser/insertion_mode.rb, line 12 def process case token = parser.token when Tokenizer::ErrorToken then consume(:error_token) when Tokenizer::TextToken then consume(:text_token) when Tokenizer::StartTagToken then consume(:start_tag_token) when Tokenizer::EndTagToken then consume(:end_tag_token) when Tokenizer::SelfClosingTagToken then consume(:self_closing_tag_token) when Tokenizer::CommentToken then consume(:comment_token) when Tokenizer::DoctypeToken then consume(:doctype_token) else default token end end
Private Instance Methods
consume(name)
click to toggle source
# File lib/gammo/parser/insertion_mode.rb, line 31 def consume(name) catch :halt do token = parser.token __send__(name, token) if respond_to?(name) default token end end
copy_attributes(dst, src)
click to toggle source
# File lib/gammo/parser/insertion_mode.rb, line 39 def copy_attributes(dst, src) return if src.attributes.length.zero? attr = {} dst.attributes.each { |dattr| attr[dattr.key] = dattr.value } src.attributes.each do |sattr| unless attr.has_key?(sattr.key) dst.attributes << sattr attr[sattr.key] = sattr.value end end end
halt(consumed)
click to toggle source
# File lib/gammo/parser/insertion_mode.rb, line 27 def halt(consumed) throw :halt, consumed end