SOAPElement is not typed so it is not derived from NSDBase.
# File soap/baseData.rb, line 610
def self.decode(elename)
o = SOAPElement.new(elename)
o
end
# File soap/baseData.rb, line 615
def self.from_obj(obj, namespace = nil)
o = SOAPElement.new(nil)
case obj
when nil
o.text = nil
when Hash
obj.each do |elename, value|
if value.is_a?(Array)
value.each do |subvalue|
child = from_obj(subvalue, namespace)
child.elename = to_elename(elename, namespace)
o.add(child)
end
else
child = from_obj(value, namespace)
child.elename = to_elename(elename, namespace)
o.add(child)
end
end
else
o.text = obj.to_s
end
o
end
# File soap/baseData.rb, line 521
def initialize(elename, text = nil)
if !elename.is_a?(XSD::QName)
elename = XSD::QName.new(nil, elename)
end
@encodingstyle = LiteralNamespace
@elename = elename
@id = nil
@precedents = []
@root = false
@parent = nil
@position = nil
@extraattr = {}
@qualified = nil
@array = []
@data = []
@text = text
end
# File soap/baseData.rb, line 554
def [](idx)
if @array.include?(idx)
@data[@array.index(idx)]
else
nil
end
end
# File soap/baseData.rb, line 562
def []=(idx, data)
if @array.include?(idx)
data.parent = self if data.respond_to?(:parent=)
@data[@array.index(idx)] = data
else
add(data)
end
end
Element interfaces.
# File soap/baseData.rb, line 550
def add(value)
add_member(value.elename.name, value)
end
# File soap/baseData.rb, line 602
def each
idx = 0
while idx < @array.length
yield(@array[idx], @data[idx])
idx += 1
end
end
# File soap/baseData.rb, line 541
def inspect
sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.elename)
end
# File soap/baseData.rb, line 571
def key?(name)
@array.include?(name)
end
# File soap/baseData.rb, line 579
def to_obj
if members.empty?
@text
else
hash = {}
proptype = {}
each do |k, v|
value = v.respond_to?(:to_obj) ? v.to_obj : v.to_s
case proptype[k]
when :single
hash[k] = [hash[k], value]
proptype[k] = :multi
when :multi
hash[k] << value
else
hash[k] = value
proptype[k] = :single
end
end
hash
end
end