module DataMaps::Concerns::Factory

Public Instance Methods

factory(name, option) click to toggle source

Factory to create an instance from a class in this module

@param [String] name @param [mixed] option @return [Class]

# 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) click to toggle source

Helper method to create class from a mapping_hash

@param [Hash] mapping @return [Array] of factorized classes

# 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