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