Class: Class

Inherits:
Object
  • Object
show all
Defined in:
lib/pinball/class.rb

Instance Method Summary collapse

Instance Method Details

#check_pinballObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/pinball/class.rb', line 16

def check_pinball
  unless is_a? Pinball
    extend Pinball
    send(:include, Pinball::Methods)

    public_send(:define_singleton_method, :inherited_with_pinball) do |child|
      inherited_without_pinball(child) if respond_to?(:inherited_without_pinball)
      child.instance_variable_set :@dependencies, dependencies
      child.check_pinball
    end

    public_send(:define_singleton_method, :inherited_without_pinball, method(:inherited)) if respond_to?(:inherited)
    public_send(:define_singleton_method, :inherited, method(:inherited_with_pinball))
  end
end

#class_inject(*deps) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/pinball/class.rb', line 8

def class_inject(*deps)
  deps.each do |dep|
    define_singleton_method dep do
      Pinball::Container.lookup(dep).fetch(self)
    end
  end
end

#inject(*deps) ⇒ Object



2
3
4
5
6
# File 'lib/pinball/class.rb', line 2

def inject(*deps)
  check_pinball
  @dependencies ||= []
  @dependencies.concat(deps).uniq!
end