class MultiXml::Parsers::Ox::Handler
Attributes
stack[RW]
Public Class Methods
new()
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 40 def initialize() @stack = [] end
Public Instance Methods
append(key, value)
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 79 def append(key, value) key = key.to_s h = @stack.last if h.has_key?(key) v = h[key] if v.is_a?(Array) v << value else h[key] = [v, value] end else h[key] = value end end
attr(name, value)
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 48 def attr(name, value) unless @stack.empty? append(name, value) end end
cdata(value)
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 58 def cdata(value) append('__content__', value) end
doc()
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 44 def doc @stack[0] end
end_element(name)
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 71 def end_element(name) @stack.pop() end
error(message, line, column)
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 75 def error(message, line, column) raise Exception.new("#{message} at #{line}:#{column}") end
start_element(name)
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 62 def start_element(name) if @stack.empty? @stack.push(Hash.new) end h = Hash.new append(name, h) @stack.push(h) end
text(value)
click to toggle source
# File lib/multi_xml/parsers/ox.rb, line 54 def text(value) append('__content__', value) end