class SOAP::SOAPElement
SOAPElement is not typed so it is not derived from NSDBase.
Attributes
data[RW]
Text interface.
text[RW]
Text interface.
type[RW]
Public Class Methods
decode(elename)
click to toggle source
# File lib/soap/baseData.rb, line 743 def self.decode(elename) o = SOAPElement.new(elename) o end
from_obj(obj, namespace = nil)
click to toggle source
when obj is a Hash or an Array:
when key starts with "xmlattr_": value is added as an XML attribute with the key name however the "xmlattr_" is dropped from the name. when key starts with "xmlele_": value is added as an XML element with the key name however the "xmlele_" is dropped from the name. if else: value is added as an XML element with the key name.
# File lib/soap/baseData.rb, line 770 def self.from_obj(obj, namespace = nil) return obj if obj.is_a?(SOAPElement) o = SOAPElement.new(nil) case obj when nil o.text = nil when Hash, Array obj.each do |name, value| addname, is_attr = parse_name(name, namespace) if value.is_a?(Array) value.each do |subvalue| if is_attr o.extraattr[addname] = subvalue else child = from_obj(subvalue, namespace) child.elename = addname o.add(child) end end else if is_attr o.extraattr[addname] = value else child = from_obj(value, namespace) child.elename = addname o.add(child) end end end else o.text = obj.to_s end o end
from_objs(objs)
click to toggle source
# File lib/soap/baseData.rb, line 748 def self.from_objs(objs) objs.collect { |value| if value.is_a?(SOAPElement) value else k, v = value ele = from_obj(v) ele.elename = XSD::QName.new(nil, k) ele end } end
new(elename, text = nil)
click to toggle source
Calls superclass method
SOAP::SOAPCompoundtype.new
# File lib/soap/baseData.rb, line 648 def initialize(elename, text = nil) super() if elename.nil? elename = XSD::QName::EMPTY else elename = Mapping.to_qname(elename) end @encodingstyle = LiteralNamespace @elename = elename @type = nil @array = [] @data = [] @text = text end
parse_name(obj, namespace = nil)
click to toggle source
# File lib/soap/baseData.rb, line 805 def self.parse_name(obj, namespace = nil) qname = to_qname(obj, namespace) if /\Axmlele_/ =~ qname.name qname = XSD::QName.new(qname.namespace, qname.name.sub(/\Axmlele_/, '')) return qname, false elsif /\Axmlattr_/ =~ qname.name qname = XSD::QName.new(qname.namespace, qname.name.sub(/\Axmlattr_/, '')) return qname, true else return qname, false end end
to_qname(obj, namespace = nil)
click to toggle source
# File lib/soap/baseData.rb, line 818 def self.to_qname(obj, namespace = nil) if obj.is_a?(XSD::QName) obj elsif /\A(.+):([^:]+)\z/ =~ obj.to_s XSD::QName.new($1, $2) else XSD::QName.new(namespace, obj.to_s) end end
Public Instance Methods
[](idx)
click to toggle source
# File lib/soap/baseData.rb, line 683 def [](idx) if @array.include?(idx) @data[@array.index(idx)] else nil end end
[]=(idx, data)
click to toggle source
# File lib/soap/baseData.rb, line 691 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
add(value)
click to toggle source
Element interfaces.
# File lib/soap/baseData.rb, line 675 def add(value) name = value.elename.name @array.push(name) @data.push(value) value.parent = self if value.respond_to?(:parent=) value end
each() { |array, data| ... }
click to toggle source
# File lib/soap/baseData.rb, line 735 def each idx = 0 while idx < @array.length yield(@array[idx], @data[idx]) idx += 1 end end
have_member()
click to toggle source
# File lib/soap/baseData.rb, line 708 def have_member !@array.empty? end
inspect()
click to toggle source
# File lib/soap/baseData.rb, line 664 def inspect sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.elename) + (@text ? " #{@text.inspect}" : '') + @data.collect { |ele| "\n#{ele.inspect}" }.join.gsub(/^/, ' ') end
key?(name)
click to toggle source
# File lib/soap/baseData.rb, line 700 def key?(name) @array.include?(name) end
members()
click to toggle source
# File lib/soap/baseData.rb, line 704 def members @array end
set(value)
click to toggle source
# File lib/soap/baseData.rb, line 670 def set(value) @text = value end
to_obj()
click to toggle source
# File lib/soap/baseData.rb, line 712 def to_obj if !have_member @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