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

<<(name)
Alias for: register_klass
[](name)
Alias for: make
[]=(name, value, wrap: Box)
Alias for: register_value
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