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 512
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 595
def character(data)
 if @data
 @data << data
 else
 @data = data
 end
end
endElement(name) click to toggle source
# File lib/xmlrpc/parser.rb, line 550
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 530
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