| 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