Class: Yadi::Container

Inherits:
Object
  • Object
show all
Defined in:
lib/yadi/container.rb

Instance Method Summary collapse

Constructor Details

#initializeContainer

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

Returns:

  • (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