Class | SOAP::SOAPElement |
In: |
lib/soap/baseData.rb
|
Parent: | Object |
SOAPElement is not typed so it is not derived from NSDBase.
text | -> | data |
elename | [RW] | |
encodingstyle | [RW] | |
extraattr | [RW] | |
id | [RW] | |
parent | [RW] | |
position | [RW] | |
precedents | [R] | |
qualified | [RW] | |
root | [RW] | |
text | [RW] | Text interface. |
# File lib/soap/baseData.rb, line 610 610: def self.decode(elename) 611: o = SOAPElement.new(elename) 612: o 613: end
# File lib/soap/baseData.rb, line 615 615: def self.from_obj(obj, namespace = nil) 616: o = SOAPElement.new(nil) 617: case obj 618: when nil 619: o.text = nil 620: when Hash 621: obj.each do |elename, value| 622: if value.is_a?(Array) 623: value.each do |subvalue| 624: child = from_obj(subvalue, namespace) 625: child.elename = to_elename(elename, namespace) 626: o.add(child) 627: end 628: else 629: child = from_obj(value, namespace) 630: child.elename = to_elename(elename, namespace) 631: o.add(child) 632: end 633: end 634: else 635: o.text = obj.to_s 636: end 637: o 638: end
# File lib/soap/baseData.rb, line 521 521: def initialize(elename, text = nil) 522: if !elename.is_a?(XSD::QName) 523: elename = XSD::QName.new(nil, elename) 524: end 525: @encodingstyle = LiteralNamespace 526: @elename = elename 527: @id = nil 528: @precedents = [] 529: @root = false 530: @parent = nil 531: @position = nil 532: @extraattr = {} 533: 534: @qualified = nil 535: 536: @array = [] 537: @data = [] 538: @text = text 539: end
# File lib/soap/baseData.rb, line 640 640: def self.to_elename(obj, namespace = nil) 641: if obj.is_a?(XSD::QName) 642: obj 643: elsif /\A(.+):([^:]+)\z/ =~ obj.to_s 644: XSD::QName.new($1, $2) 645: else 646: XSD::QName.new(namespace, obj.to_s) 647: end 648: end
# File lib/soap/baseData.rb, line 554 554: def [](idx) 555: if @array.include?(idx) 556: @data[@array.index(idx)] 557: else 558: nil 559: end 560: end
# File lib/soap/baseData.rb, line 562 562: def []=(idx, data) 563: if @array.include?(idx) 564: data.parent = self if data.respond_to?(:parent=) 565: @data[@array.index(idx)] = data 566: else 567: add(data) 568: end 569: end
Element interfaces.
# File lib/soap/baseData.rb, line 550 550: def add(value) 551: add_member(value.elename.name, value) 552: end
# File lib/soap/baseData.rb, line 602 602: def each 603: idx = 0 604: while idx < @array.length 605: yield(@array[idx], @data[idx]) 606: idx += 1 607: end 608: end
# File lib/soap/baseData.rb, line 541 541: def inspect 542: sprintf("#<%s:0x%x %s>", self.class.name, __id__, self.elename) 543: end
# File lib/soap/baseData.rb, line 579 579: def to_obj 580: if members.empty? 581: @text 582: else 583: hash = {} 584: proptype = {} 585: each do |k, v| 586: value = v.respond_to?(:to_obj) ? v.to_obj : v.to_s 587: case proptype[k] 588: when :single 589: hash[k] = [hash[k], value] 590: proptype[k] = :multi 591: when :multi 592: hash[k] << value 593: else 594: hash[k] = value 595: proptype[k] = :single 596: end 597: end 598: hash 599: end 600: end
# File lib/soap/baseData.rb, line 661 661: def add_accessor(name) 662: methodname = name 663: if self.respond_to?(methodname) 664: methodname = safe_accessor_name(methodname) 665: end 666: Mapping.define_singleton_method(self, methodname) do 667: @data[@array.index(name)] 668: end 669: Mapping.define_singleton_method(self, methodname + '=') do |value| 670: @data[@array.index(name)] = value 671: end 672: end
# File lib/soap/baseData.rb, line 674 674: def add_accessor(name) 675: methodname = safe_accessor_name(name) 676: instance_eval "def \#{methodname}\n@data[@array.index(\#{name.dump})]\nend\n\ndef \#{methodname}=(value)\n@data[@array.index(\#{name.dump})] = value\nend\n" 677: end
# File lib/soap/baseData.rb, line 652 652: def add_member(name, value) 653: add_accessor(name) 654: @array.push(name) 655: @data.push(value) 656: value.parent = self if value.respond_to?(:parent=) 657: value 658: end