class WsdlMapper::Serializers::SerializerCore
Public Class Methods
new(resolver:, namespaces: WsdlMapper::Dom::Namespaces.new, default_namespace: nil)
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 11 def initialize(resolver:, namespaces: WsdlMapper::Dom::Namespaces.new, default_namespace: nil) @doc = ::Nokogiri::XML::Document.new @doc.encoding = 'UTF-8' @x = ::Nokogiri::XML::Builder.with @doc @tm = ::WsdlMapper::TypeMapping::DEFAULT @resolver = resolver @namespaces = namespaces if default_namespace @namespaces.default = default_namespace end end
Public Instance Methods
complex(_type_name, element_name, attributes) { |self| ... }
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 27 def complex(_type_name, element_name, attributes) # TODO: keep type_name parameter? @x.send expand_tag(*element_name), eval_attributes(attributes) do |_| yield self end end
get(name)
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 23 def get(name) @resolver.resolve name end
simple(_type_name, element_name) { |self| ... }
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 34 def simple(_type_name, element_name) @x.send expand_tag(*element_name) do |_| yield self end end
soap_enc()
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 61 def soap_enc @soap_enc ||= ::WsdlMapper::Dom::SoapEncodingType::NAMESPACE end
text_builtin(value, type_name)
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 40 def text_builtin(value, type_name) return if value.nil? @x.text builtin_to_xml(type_name, value) end
to_doc()
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 54 def to_doc @namespaces.each do |(prefix, url)| @doc.root.add_namespace prefix, url end @doc end
to_xml()
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 50 def to_xml to_doc.to_xml end
value_builtin(element_name, value, type_name)
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 45 def value_builtin(element_name, value, type_name) return if value.nil? @x.send expand_tag(*element_name), builtin_to_xml(type_name, value) end
xsd()
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 65 def xsd @xsd ||= ::WsdlMapper::Dom::BuiltinType::NAMESPACE end
Protected Instance Methods
builtin(name)
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 75 def builtin(name) ::WsdlMapper::Dom::BuiltinType[name] end
builtin_to_xml(type_name, value)
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 79 def builtin_to_xml(type_name, value) @tm.to_xml builtin(type_name), value end
eval_attributes(attributes)
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 83 def eval_attributes(attributes) attributes.each_with_object({}) do |attr, hsh| attr_name = attr[0] value = attr[1] type = attr[2] next if value.nil? ns = attr_name[0] name = attr_name[1] if ns prefix = @namespaces.prefix_for ns name = "#{prefix}:#{name}" end if value.is_a? Array value = if value[0] prefix = @namespaces.prefix_for value[0] "#{prefix}:#{value[1]}" else value[1] end end hsh[name] = @tm.to_xml builtin(type), value end end
expand_tag(ns, tag)
click to toggle source
# File lib/wsdl_mapper/serializers/serializer_core.rb, line 70 def expand_tag(ns, tag) prefix = @namespaces.prefix_for ns prefix ? "#{prefix}:#{tag}" : tag end