Class SOAP::Mapping::Object
In: lib/soap/mapping/registry.rb
Parent: Object

For anyType object: SOAP::Mapping::Object not ::Object

Methods

Included Modules

Marshallable

Public Class methods

[Source]

    # File lib/soap/mapping/registry.rb, line 65
65:   def initialize
66:     @__xmlele_type = {}
67:     @__xmlele = []
68:     @__xmlattr = {}
69:   end

Public Instance methods

[Source]

    # 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

[Source]

     # 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

[Source]

     # 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

[Source]

    # File lib/soap/mapping/registry.rb, line 76
76:   def __xmlattr
77:     @__xmlattr
78:   end

[Source]

    # File lib/soap/mapping/registry.rb, line 80
80:   def __xmlele
81:     @__xmlele
82:   end

[Source]

    # 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

Private Instance methods

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Validate]