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)
- - (Object) each_element(&block)
- - (Object) each_type(&block)
-
- (ElementDirectory) initialize(type_directory, *base, &block)
constructor
A new instance of ElementDirectory.
- - (Boolean) knows?(element_name)
- - (Object) load(element_name)
- - (Object) register_element(element_name, type_name, require_path, class_name)
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)
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 |