class Yadi::Container
Public Class Methods
new()
click to toggle source
# File lib/yadi/container.rb, line 8 def initialize @repo = {} end
Public Instance Methods
has?(name)
click to toggle source
# File lib/yadi/container.rb, line 23 def has?(name) @repo.has_key?(name) end
make(name)
click to toggle source
# File lib/yadi/container.rb, line 46 def make(name) box = has?(name) ? @repo[name] : register_klass(name) box.(self) end
Also aliased as: []
register(*args)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/yadi/container.rb, line 41 def register_klass(name) @repo[name] = KlassBox.new(name) end
Also aliased as: <<
register_value(name, value, wrap: Box)
click to toggle source
# File lib/yadi/container.rb, line 36 def register_value(name, value, wrap: Box) @repo[name] = wrap.new(value) end
Also aliased as: []=
resolve(name)
click to toggle source
# 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