Class: Generative::GeneratorManager

Inherits:
Object
  • Object
show all
Defined in:
lib/generative/generator_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(preregistered_generators = {}) ⇒ GeneratorManager

Returns a new instance of GeneratorManager.



9
10
11
# File 'lib/generative/generator_manager.rb', line 9

def initialize(preregistered_generators={})
  @generators = Hash.new(preregistered_generators)
end

Instance Attribute Details

#generatorsObject (readonly)

Returns the value of attribute generators.



7
8
9
# File 'lib/generative/generator_manager.rb', line 7

def generators
  @generators
end

Instance Method Details

#find_and_call(name, *args) ⇒ Object



20
21
22
23
24
# File 'lib/generative/generator_manager.rb', line 20

def find_and_call(name, *args)
  generators.fetch(name) do
    raise UnregisteredGenerator, "#{name} generator not registered"
  end.call(*args)
end

#generator_valid?(generator) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/generative/generator_manager.rb', line 26

def generator_valid?(generator)
  generator.respond_to?(:call)
end

#register_generator(name, factory = nil, &generator) ⇒ Object

Raises:



13
14
15
16
17
18
# File 'lib/generative/generator_manager.rb', line 13

def register_generator(name, factory=nil, &generator)
  registerable = block_given? ? generator : factory
  msg = "#{registerable} must respond to :call"
  raise InvalidGenerator, msg unless generator_valid?(registerable)
  @generators.merge!(name => registerable)
end