Class: WsdlMapper::Deserializers::ElementDirectory

Inherits:
Object
  • Object
show all
Defined in:
lib/wsdl_mapper/deserializers/element_directory.rb

Defined Under Namespace

Classes: ElementItem

Instance Method Summary (collapse)

Constructor Details

- (ElementDirectory) initialize(type_directory, *base, &block)

Returns a new instance of ElementDirectory



12
13
14
15
16
17
# File 'lib/wsdl_mapper/deserializers/element_directory.rb', line 12

def initialize(type_directory, *base, &block)
  @type_directory = type_directory
  @directory = WsdlMapper::Dom::Directory.new on_nil: Errors::UnknownElementError
  @base = base
  instance_exec &block if block_given?
end

Instance Method Details

- (Object) each_element(&block)



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/wsdl_mapper/deserializers/element_directory.rb', line 48

def each_element(&block)
  if block_given?
    @base.each do |base|
      base.each_element &block
    end
    @directory.each &block
  else
    types = @base.inject([]) { |sum, b| sum + b.each_element.to_a }
    types + @directory.each.to_a
  end
end

- (Object) each_type(&block)



60
61
62
# File 'lib/wsdl_mapper/deserializers/element_directory.rb', line 60

def each_type(&block)
  @type_directory.each_type &block
end

- (Boolean) knows?(element_name)

Returns:

  • (Boolean)


25
26
27
# File 'lib/wsdl_mapper/deserializers/element_directory.rb', line 25

def knows?(element_name)
  @directory.has_key?(element_name) || @base.any? { |b| b.knows? element_name }
end

- (Object) load(element_name)



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/wsdl_mapper/deserializers/element_directory.rb', line 29

def load(element_name)
  if @directory.has_key? element_name
    item = @directory[element_name]
    if item.loaded
      false
    else
      require item.require_path
      item.loaded = true
      true
    end
  else
    base = @base.find { |b| b.knows? element_name }
    unless base
      raise Errors::UnknownElementError.new element_name
    end
    base.load element_name
  end
end

- (Object) register_element(element_name, type_name, require_path, class_name)



19
20
21
22
23
# File 'lib/wsdl_mapper/deserializers/element_directory.rb', line 19

def register_element(element_name, type_name, require_path, class_name)
  element_name = WsdlMapper::Dom::Name.get *element_name
  type_name = WsdlMapper::Dom::Name.get *type_name
  @directory[element_name] = ElementItem.new element_name, type_name, require_path, class_name
end