Class: Yadi::Container
- Inherits:
-
Object
- Object
- Yadi::Container
- Defined in:
- lib/yadi/container.rb
Instance Method Summary collapse
- #has?(name) ⇒ Boolean
-
#initialize ⇒ Container
constructor
A new instance of Container.
- #make(name) ⇒ Object (also: #[])
- #register(*args) ⇒ Object
- #register!(*args) ⇒ Object
- #register_klass(name) ⇒ Object (also: #<<)
- #register_value(name, value, wrap: Box) ⇒ Object (also: #[]=)
- #resolve(name) ⇒ Object
Constructor Details
#initialize ⇒ Container
Returns a new instance of Container.
8 9 10 |
# File 'lib/yadi/container.rb', line 8 def initialize @repo = {} end |
Instance Method Details
#has?(name) ⇒ Boolean
23 24 25 |
# File 'lib/yadi/container.rb', line 23 def has?(name) @repo.has_key?(name) end |
#make(name) ⇒ Object Also known as: []
46 47 48 49 |
# File 'lib/yadi/container.rb', line 46 def make(name) box = has?(name) ? @repo[name] : register_klass(name) box.(self) end |
#register(*args) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/yadi/container.rb', line 27 def register(*args) name = args[0] if has?(name) raise "'#{name}' already registered. Use register! if you whant to force rewrite value." else register!(*args) end end |
#register!(*args) ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/yadi/container.rb', line 12 def register!(*args) args_count = args.count if 1 == args_count register_klass(*args) elsif args_count > 1 register_value(*args) else raise 'Unknown register call pattern' end end |
#register_klass(name) ⇒ Object Also known as: <<
41 42 43 |
# File 'lib/yadi/container.rb', line 41 def register_klass(name) @repo[name] = KlassBox.new(name) end |
#register_value(name, value, wrap: Box) ⇒ Object Also known as: []=
36 37 38 |
# File 'lib/yadi/container.rb', line 36 def register_value(name, value, wrap: Box) @repo[name] = wrap.new(value) end |
#resolve(name) ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/yadi/container.rb', line 52 def resolve(name) if has?(name) box = @repo[name] box.(self) else raise "Can't resolve #{name}" end end |