# 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 477
    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 560
    def character(data)
      if @data
        @data << data
      else
        @data = data
      end
    end

endElement(name) click to toggle source

    # File lib/xmlrpc/parser.rb, line 515
    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 495
    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