SOAPElement is not typed so it is not derived from NSDBase.
# File lib/soap/baseData.rb, line 743 743: def self.decode(elename) 744: o = SOAPElement.new(elename) 745: o 746: end
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
# 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
# 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
# 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
# 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
# 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
# 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
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
# 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
# File lib/soap/baseData.rb, line 708 708: def have_member 709: !@array.empty? 710: end
# 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
# File lib/soap/baseData.rb, line 700 700: def key?(name) 701: @array.include?(name) 702: end
# File lib/soap/baseData.rb, line 704 704: def members 705: @array 706: end
# File lib/soap/baseData.rb, line 670 670: def set(value) 671: @text = value 672: end
# 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.
Generated with the Darkfish Rdoc Generator 1.1.6.