Module: DataMaps::Concerns::Factory

Included in:
DataMaps::Converter, Then, When
Defined in:
lib/data_maps/concerns/factory.rb

Instance Method Summary collapse

Instance Method Details

#factory(name, option) ⇒ Class

Factory to create an instance from a class in this module

Parameters:

  • name (String)
  • option (mixed)

Returns:

  • (Class)

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
# File 'lib/data_maps/concerns/factory.rb', line 9

def factory(name, option)
  name = name.to_s.classify
  klass_name = "#{self.name}::#{name}"
  raise ArgumentError.new("No class '#{klass_name}' exists.") unless self.constants.include?(name.to_sym)

  klass = klass_name.constantize
  klass.new(option)
end

#factory_from_map(mapping) ⇒ Array

Helper method to create class from a mapping_hash

Parameters:

  • mapping (Hash)

Returns:

  • (Array)

    of factorized classes

Raises:

  • (ArgumentError)


22
23
24
25
26
27
28
# File 'lib/data_maps/concerns/factory.rb', line 22

def factory_from_map(mapping)
  raise ArgumentError.new("#{self.name} mapping has to be an hash") unless mapping.is_a?(Hash)

  mapping.map do |name, option|
    self.factory(name, option)
  end
end