Class | SOAP::Mapping::Object |
In: |
lib/soap/mapping/registry.rb
|
Parent: | Object |
For anyType object: SOAP::Mapping::Object not ::Object
# File lib/soap/mapping/registry.rb, line 65 65: def initialize 66: @__xmlele_type = {} 67: @__xmlele = [] 68: @__xmlattr = {} 69: end
# File lib/soap/mapping/registry.rb, line 84 84: def [](qname) 85: unless qname.is_a?(XSD::QName) 86: qname = XSD::QName.new(nil, qname) 87: end 88: @__xmlele.each do |k, v| 89: return v if k == qname 90: end 91: # fallback 92: @__xmlele.each do |k, v| 93: return v if k.name == qname.name 94: end 95: nil 96: end
# File lib/soap/mapping/registry.rb, line 98 98: def []=(qname, value) 99: unless qname.is_a?(XSD::QName) 100: qname = XSD::QName.new(nil, qname) 101: end 102: found = false 103: @__xmlele.each do |pair| 104: if pair[0] == qname 105: found = true 106: pair[1] = value 107: end 108: end 109: unless found 110: __define_attr_accessor(qname) 111: @__xmlele << [qname, value] 112: end 113: @__xmlele_type[qname] = :single 114: end
# File lib/soap/mapping/registry.rb, line 116 116: def __add_xmlele_value(qname, value) 117: found = false 118: @__xmlele.map! do |k, v| 119: if k == qname 120: found = true 121: [k, __set_xmlele_value(k, v, value)] 122: else 123: [k, v] 124: end 125: end 126: unless found 127: __define_attr_accessor(qname) 128: @__xmlele << [qname, value] 129: @__xmlele_type[qname] = :single 130: end 131: value 132: end
# File lib/soap/mapping/registry.rb, line 71 71: def inspect 72: sprintf("#<%s:0x%x%s>", self.class.name, __id__, 73: @__xmlele.collect { |name, value| " #{name}=#{value.inspect}" }.join) 74: end
# File lib/soap/mapping/registry.rb, line 144 144: def __define_attr_accessor(qname) 145: name = XSD::CodeGen::GenSupport.safemethodname(qname.name) 146: instance_eval "def \#{name}\nself[\#{qname.dump}]\nend\n\ndef \#{name}=(value)\nself[\#{qname.dump}] = value\nend\n" 147: end
# File lib/soap/mapping/registry.rb, line 137 137: def __define_attr_accessor(qname) 138: name = XSD::CodeGen::GenSupport.safemethodname(qname.name) 139: Mapping.define_attr_accessor(self, name, 140: proc { self[qname] }, 141: proc { |value| self[qname] = value }) 142: end
# File lib/soap/mapping/registry.rb, line 159 159: def __set_xmlele_value(key, org, value) 160: case @__xmlele_type[key] 161: when :multi 162: org << value 163: org 164: when :single 165: @__xmlele_type[key] = :multi 166: [org, value] 167: else 168: raise RuntimeError.new("unknown type") 169: end 170: end