class Codependent::Injectable

Attributes

dependencies[R]
resolver[R]
state[R]

Public Class Methods

new(type, dependencies, state, resolver) click to toggle source
# File lib/codependent/injectable.rb, line 3
def initialize(type, dependencies, state, resolver)
  @type = type
  @dependencies = dependencies
  @state = state
  @resolver = resolver
  @singleton_value = nil
end

Public Instance Methods

depends_on?(dependency_id) click to toggle source
# File lib/codependent/injectable.rb, line 13
def depends_on?(dependency_id)
  @dependencies.include?(dependency_id)
end
instance?() click to toggle source
# File lib/codependent/injectable.rb, line 21
def instance?
  @type == :instance
end
singleton?() click to toggle source
# File lib/codependent/injectable.rb, line 17
def singleton?
  @type == :singleton
end
value(dependencies) click to toggle source
# File lib/codependent/injectable.rb, line 25
def value(dependencies)
  singleton? ? singleton_value(dependencies) : instance_value(dependencies)
end

Private Instance Methods

instance_value(dependencies) click to toggle source
# File lib/codependent/injectable.rb, line 35
def instance_value(dependencies)
  resolver.new.(state, dependencies)
end
singleton_value(dependencies) click to toggle source
# File lib/codependent/injectable.rb, line 31
def singleton_value(dependencies)
  @singleton_value ||= instance_value(dependencies)
end