module XMLRPC::XMLParser::StreamParserMixin

Attributes

fault[R]
method_name[R]
params[R]

Public Class Methods

new(*a) click to toggle source
Calls superclass method
# File lib/xmlrpc/parser.rb, line 513
def initialize(*a)
  super(*a)
  @params = []
  @values = []
  @val_stack = []

  @names = []
  @name = []

  @structs = []
  @struct = {}

  @method_name = nil
  @fault = nil

  @data = nil
end

Public Instance Methods

character(data) click to toggle source
# File lib/xmlrpc/parser.rb, line 596
def character(data)
  if @data
    @data << data
  else
    @data = data
  end
end
endElement(name) click to toggle source
# File lib/xmlrpc/parser.rb, line 551
def endElement(name)
  @data ||= ""
  case name
  when "string"
    @value = @data
  when "i4", "i8", "int"
    @value = Convert.int(@data)
  when "boolean"
    @value = Convert.boolean(@data)
  when "double"
    @value = Convert.double(@data)
  when "dateTime.iso8601"
    @value = Convert.dateTime(@data)
  when "base64"
    @value = Convert.base64(@data)
  when "value"
    @value = @data if @value.nil?
    @values << (@value == :nil ? nil : @value)
  when "array"
    @value = @values
    @values = @val_stack.pop
  when "struct"
    @value = Convert.struct(@struct)

    @name = @names.pop
    @struct = @structs.pop
  when "name"
    @name[0] = @data
  when "member"
    @struct[@name[0]] = @values.pop

  when "param"
    @params << @values[0]
    @values = []

  when "fault"
    @fault = Convert.fault(@values[0])

  when "methodName"
    @method_name = @data
  end

  @data = nil
end
startElement(name, attrs=[]) click to toggle source
# File lib/xmlrpc/parser.rb, line 531
def startElement(name, attrs=[])
  @data = nil
  case name
  when "value"
    @value = nil
  when "nil"
    raise "wrong/unknown XML-RPC type 'nil'" unless Config::ENABLE_NIL_PARSER
    @value = :nil
  when "array"
    @val_stack << @values
    @values = []
  when "struct"
    @names << @name
    @name = []

    @structs << @struct
    @struct = {}
  end
end