Class: WsdlMapper::Serializers::SerializerCore

Inherits:
Object
  • Object
show all
Defined in:
lib/wsdl_mapper/serializers/serializer_core.rb

Instance Method Summary collapse

Constructor Details

#initialize(resolver:, namespaces: WsdlMapper::Dom::Namespaces.new, default_namespace: nil) ⇒ SerializerCore

Returns a new instance of SerializerCore.



11
12
13
14
15
16
17
18
19
20
21
# 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

Instance Method Details

#complex(_type_name, element_name, attributes) ⇒ Object



27
28
29
30
31
32
# 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) ⇒ Object



23
24
25
# File 'lib/wsdl_mapper/serializers/serializer_core.rb', line 23

def get(name)
  @resolver.resolve name
end

#simple(_type_name, element_name) ⇒ Object



34
35
36
37
38
# 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_encObject



61
62
63
# 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) ⇒ Object



40
41
42
43
# 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_docObject



54
55
56
57
58
59
# 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_xmlObject



50
51
52
# 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) ⇒ Object



45
46
47
48
# 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

#xsdObject



65
66
67
# File 'lib/wsdl_mapper/serializers/serializer_core.rb', line 65

def xsd
  @xsd ||= ::WsdlMapper::Dom::BuiltinType::NAMESPACE
end