Class: WsdlMapper::Serializers::TypeDirectory

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

Defined Under Namespace

Classes: TypeItem

Instance Method Summary collapse

Constructor Details

#initialize(*base, &block) ⇒ TypeDirectory

Returns a new instance of TypeDirectory.



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/wsdl_mapper/serializers/type_directory.rb', line 9

def initialize(*base, &block)
  @base = base
  @types = {}
  @elements = {}
  @serializers = {}
  @by_type_name = Hash.new do |h, k|
    h[k] = find_and_load k
  end

  instance_exec(&block) if block_given?
end

Instance Method Details

#find(obj) ⇒ Object



48
49
50
# File 'lib/wsdl_mapper/serializers/type_directory.rb', line 48

def find(obj)
  resolve obj.class.name
end

#get_element_name(name) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/wsdl_mapper/serializers/type_directory.rb', line 30

def get_element_name(name)
  element_name = @elements[normalize(name)]
  return element_name if element_name
  @base.each do |base|
    element_name = base.get_element_name(name)
    return element_name if element_name
  end
  nil # TODO: raise error?
end

#register_element(name, element_name) ⇒ Object



21
22
23
# File 'lib/wsdl_mapper/serializers/type_directory.rb', line 21

def register_element(name, element_name)
  @elements[normalize(name)] = WsdlMapper::Dom::Name.get(*element_name)
end

#register_serializer(s8r_name, serializer) ⇒ Object



44
45
46
# File 'lib/wsdl_mapper/serializers/type_directory.rb', line 44

def register_serializer(s8r_name, serializer)
  @serializers[normalize(s8r_name)] = serializer
end

#register_type(type_name, require_path, s8r_name) ⇒ Object



25
26
27
28
# File 'lib/wsdl_mapper/serializers/type_directory.rb', line 25

def register_type(type_name, require_path, s8r_name)
  item = TypeItem.new type_name, require_path, s8r_name
  @types[normalize(type_name)] = item
end

#resolve(name) ⇒ Object



40
41
42
# File 'lib/wsdl_mapper/serializers/type_directory.rb', line 40

def resolve(name)
  @by_type_name[normalize(name)]
end