Module: Barn::Namespace
- Included in:
- Barn
- Defined in:
- lib/barn/namespace.rb
Instance Method Summary collapse
- #build(name, build_options = {}) ⇒ Object
- #build_chain ⇒ Object
- #define(name, factory_options = {}, &blk) ⇒ Object
- #factories ⇒ Object
- #reset ⇒ Object
Instance Method Details
#build(name, build_options = {}) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/barn/namespace.rb', line 8 def build(name, = {}) factory = factories[name] chained_builder = build_chain.reverse.reduce(factory) do |final, builder| builder.new(final) end # not caching this for simplicity chained_builder.call \ :factory => factory, :args => end |
#build_chain ⇒ Object
20 21 22 |
# File 'lib/barn/namespace.rb', line 20 def build_chain @build_chain ||= [Barn::Builders::Hash] end |
#define(name, factory_options = {}, &blk) ⇒ Object
3 4 5 6 |
# File 'lib/barn/namespace.rb', line 3 def define(name, = {}, &blk) blk ||= Proc.new {} factories[name] = Factory.new(name, , &blk) end |
#factories ⇒ Object
24 25 26 |
# File 'lib/barn/namespace.rb', line 24 def factories @factories ||= {} end |
#reset ⇒ Object
28 29 30 31 |
# File 'lib/barn/namespace.rb', line 28 def reset @computed_chain = nil @factories = {} end |