method
encode_attrs
v1_8_7_72 -
Show latest stable
- Class:
SOAP::EncodingStyle::SOAPHandler
encode_attrs(generator, ns, data, parent)private
No documentation available.
# File lib/soap/encodingstyle/soapHandler.rb, line 257
def encode_attrs(generator, ns, data, parent)
attrs = {}
return attrs if data.is_a?(SOAPReference)
if !parent || parent.encodingstyle != EncodingNamespace
if @generate_explicit_type
SOAPGenerator.assign_ns(attrs, ns, EnvelopeNamespace)
attrs[ns.name(AttrEncodingStyleName)] = EncodingNamespace
end
data.encodingstyle = EncodingNamespace
end
if data.is_a?(SOAPNil)
attrs[ns.name(XSD::AttrNilName)] = XSD::NilValue
elsif @generate_explicit_type
if data.type.namespace
SOAPGenerator.assign_ns(attrs, ns, data.type.namespace)
end
if data.is_a?(SOAPArray)
if data.arytype.namespace
SOAPGenerator.assign_ns(attrs, ns, data.arytype.namespace)
end
SOAPGenerator.assign_ns(attrs, ns, EncodingNamespace)
attrs[ns.name(AttrArrayTypeName)] = ns.name(create_arytype(ns, data))
if data.type.name
attrs[ns.name(XSD::AttrTypeName)] = ns.name(data.type)
end
elsif parent && parent.is_a?(SOAPArray) && (parent.arytype == data.type)
# No need to add.
elsif !data.type.namespace
# No need to add.
else
attrs[ns.name(XSD::AttrTypeName)] = ns.name(data.type)
end
end
data.extraattr.each do |key, value|
SOAPGenerator.assign_ns(attrs, ns, key.namespace)
attrs[ns.name(key)] = encode_attr_value(generator, ns, key, value)
end
if data.id
attrs['id'] = data.id
end
attrs
end