class WsdlMapper::Deserializers::ElementDirectory
Public Class Methods
new(type_directory, *base, &block)
click to toggle source
# 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
Public Instance Methods
each_element(&block)
click to toggle source
# File lib/wsdl_mapper/deserializers/element_directory.rb, line 49 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
each_type(&block)
click to toggle source
# File lib/wsdl_mapper/deserializers/element_directory.rb, line 61 def each_type(&block) @type_directory.each_type(&block) end
knows?(element_name)
click to toggle source
# File lib/wsdl_mapper/deserializers/element_directory.rb, line 26 def knows?(element_name) @directory.has_key?(element_name) || @base.any? { |b| b.knows? element_name } end
load(element_name)
click to toggle source
# File lib/wsdl_mapper/deserializers/element_directory.rb, line 30 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
register_element(element_name, type_name, require_path, class_name)
click to toggle source
# File lib/wsdl_mapper/deserializers/element_directory.rb, line 20 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