Class: WsdlMapper::Deserializers::ElementDirectory
- Inherits:
-
Object
- Object
- WsdlMapper::Deserializers::ElementDirectory
- Defined in:
- lib/wsdl_mapper/deserializers/element_directory.rb
Defined Under Namespace
Classes: ElementItem
Instance Method Summary collapse
- #each_element(&block) ⇒ Object
- #each_type(&block) ⇒ Object
-
#initialize(type_directory, *base, &block) ⇒ ElementDirectory
constructor
A new instance of ElementDirectory.
- #knows?(element_name) ⇒ Boolean
- #load(element_name) ⇒ Object
- #register_element(element_name, type_name, require_path, class_name) ⇒ Object
Constructor Details
#initialize(type_directory, *base, &block) ⇒ ElementDirectory
Returns a new instance of ElementDirectory.
12 13 14 15 16 17 18 |
# 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
#each_element(&block) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 |
# 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) ⇒ Object
61 62 63 |
# File 'lib/wsdl_mapper/deserializers/element_directory.rb', line 61 def each_type(&block) @type_directory.each_type(&block) end |
#knows?(element_name) ⇒ Boolean
26 27 28 |
# 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) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# 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) ⇒ Object
20 21 22 23 24 |
# 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 |