Parent

Included Modules

Files

Class Index [+]

Quicksearch

SOAP::SOAPElement

SOAPElement is not typed so it is not derived from NSDBase.

Attributes

type[RW]
text[RW]

Text interface.

Public Class Methods

decode(elename) click to toggle source
     # File lib/soap/baseData.rb, line 743
743:   def self.decode(elename)
744:     o = SOAPElement.new(elename)
745:     o
746:   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
770:   def self.from_obj(obj, namespace = nil)
771:     return obj if obj.is_a?(SOAPElement)
772:     o = SOAPElement.new(nil)
773:     case obj
774:     when nil
775:       o.text = nil
776:     when Hash, Array
777:       obj.each do |name, value|
778:         addname, is_attr = parse_name(name, namespace)
779:         if value.is_a?(Array)
780:           value.each do |subvalue|
781:             if is_attr
782:               o.extraattr[addname] = subvalue
783:             else
784:               child = from_obj(subvalue, namespace)
785:               child.elename = addname
786:               o.add(child)
787:             end
788:           end
789:         else
790:           if is_attr
791:             o.extraattr[addname] = value
792:           else
793:             child = from_obj(value, namespace)
794:             child.elename = addname
795:             o.add(child)
796:           end
797:         end
798:       end
799:     else
800:       o.text = obj.to_s
801:     end
802:     o
803:   end
from_objs(objs) click to toggle source
     # File lib/soap/baseData.rb, line 748
748:   def self.from_objs(objs)
749:     objs.collect { |value|
750:       if value.is_a?(SOAPElement)
751:         value
752:       else
753:         k, v = value
754:         ele = from_obj(v)
755:         ele.elename = XSD::QName.new(nil, k)
756:         ele
757:       end
758:     }
759:   end
new(elename, text = nil) click to toggle source
     # File lib/soap/baseData.rb, line 648
648:   def initialize(elename, text = nil)
649:     super()
650:     if elename.nil?
651:       elename = XSD::QName::EMPTY
652:     else
653:       elename = Mapping.to_qname(elename)
654:     end
655:     @encodingstyle = LiteralNamespace
656:     @elename = elename
657:     @type = nil
658: 
659:     @array = []
660:     @data = []
661:     @text = text
662:   end
parse_name(obj, namespace = nil) click to toggle source
     # File lib/soap/baseData.rb, line 805
805:   def self.parse_name(obj, namespace = nil)
806:     qname = to_qname(obj, namespace)
807:     if /\Axmlele_/ =~ qname.name
808:       qname = XSD::QName.new(qname.namespace, qname.name.sub(/\Axmlele_/, ''))
809:       return qname, false
810:     elsif /\Axmlattr_/ =~ qname.name
811:       qname = XSD::QName.new(qname.namespace, qname.name.sub(/\Axmlattr_/, ''))
812:       return qname, true
813:     else
814:       return qname, false
815:     end
816:   end
to_qname(obj, namespace = nil) click to toggle source
     # File lib/soap/baseData.rb, line 818
818:   def self.to_qname(obj, namespace = nil)
819:     if obj.is_a?(XSD::QName)
820:       obj
821:     elsif /\A(.+):([^:]+)\z/ =~ obj.to_s
822:       XSD::QName.new($1, $2)
823:     else
824:       XSD::QName.new(namespace, obj.to_s)
825:     end
826:   end

Public Instance Methods

[](idx) click to toggle source
     # File lib/soap/baseData.rb, line 683
683:   def [](idx)
684:     if @array.include?(idx)
685:       @data[@array.index(idx)]
686:     else
687:       nil
688:     end
689:   end
[]=(idx, data) click to toggle source
     # File lib/soap/baseData.rb, line 691
691:   def []=(idx, data)
692:     if @array.include?(idx)
693:       data.parent = self if data.respond_to?(:parent=)
694:       @data[@array.index(idx)] = data
695:     else
696:       add(data)
697:     end
698:   end
add(value) click to toggle source

Element interfaces.

     # File lib/soap/baseData.rb, line 675
675:   def add(value)
676:     name = value.elename.name
677:     @array.push(name)
678:     @data.push(value)
679:     value.parent = self if value.respond_to?(:parent=)
680:     value
681:   end
each() click to toggle source
     # File lib/soap/baseData.rb, line 735
735:   def each
736:     idx = 0
737:     while idx < @array.length
738:       yield(@array[idx], @data[idx])
739:       idx += 1
740:     end
741:   end
have_member() click to toggle source
     # File lib/soap/baseData.rb, line 708
708:   def have_member
709:     !@array.empty?
710:   end
inspect() click to toggle source
     # File lib/soap/baseData.rb, line 664
664:   def inspect
665:     sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.elename) +
666:       (@text ? " #{@text.inspect}" : '') +
667:       @data.collect { |ele| "\n#{ele.inspect}" }.join.gsub(/^/, '  ')
668:   end
key?(name) click to toggle source
     # File lib/soap/baseData.rb, line 700
700:   def key?(name)
701:     @array.include?(name)
702:   end
members() click to toggle source
     # File lib/soap/baseData.rb, line 704
704:   def members
705:     @array
706:   end
set(value) click to toggle source
     # File lib/soap/baseData.rb, line 670
670:   def set(value)
671:     @text = value
672:   end
to_obj() click to toggle source
     # File lib/soap/baseData.rb, line 712
712:   def to_obj
713:     if !have_member
714:       @text
715:     else
716:       hash = {}
717:       proptype = {}
718:       each do |k, v|
719:         value = v.respond_to?(:to_obj) ? v.to_obj : v.to_s
720:         case proptype[k]
721:         when :single
722:           hash[k] = [hash[k], value]
723:           proptype[k] = :multi
724:         when :multi
725:           hash[k] << value
726:         else
727:           hash[k] = value
728:           proptype[k] = :single
729:         end
730:       end
731:       hash
732:     end
733:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.