Class: Generative::GeneratorManager
- Inherits:
-
Object
- Object
- Generative::GeneratorManager
- Defined in:
- lib/generative/generator_manager.rb
Instance Attribute Summary collapse
-
#generators ⇒ Object
readonly
Returns the value of attribute generators.
Instance Method Summary collapse
- #find_and_call(name, *args) ⇒ Object
- #generator_valid?(generator) ⇒ Boolean
-
#initialize(preregistered_generators = {}) ⇒ GeneratorManager
constructor
A new instance of GeneratorManager.
- #register_generator(name, factory = nil, &generator) ⇒ Object
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
#generators ⇒ Object (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
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
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 |