Module: Kouba::SimpleFactory

Defined in:
lib/kouba/simple_factory.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(mod) ⇒ Object



5
6
7
# File 'lib/kouba/simple_factory.rb', line 5

def self.included(mod)
  mod.send(:module_function, :create, :find, :name_key)
end

Instance Method Details

#create(config) ⇒ Object



21
22
23
# File 'lib/kouba/simple_factory.rb', line 21

def create(config)
  (find(config[@name_key ? @name_key.to_sym : :name])).new(config[:options] || {})
end

#find(name) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/kouba/simple_factory.rb', line 13

def find(name)
  inflector = Dry::Inflector.new
  children = constants.collect { |c| const_get(c) }.compact
  children.find do |child|
    inflector.underscore(child.name.split('::').last) == name
  end
end

#name_key(key) ⇒ Object



9
10
11
# File 'lib/kouba/simple_factory.rb', line 9

def name_key(key)
  @name_key = key
end