Parent

Files

Class/Module Index [+]

Quicksearch

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
# 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() 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.