Class: Hinge::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/hinge/resolver.rb

Defined Under Namespace

Classes: Node

Constant Summary collapse

Error =
Class.new(RuntimeError)
UnknownDependency =
Class.new(Error)
CircularReference =
Class.new(Error)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(container) ⇒ Resolver

Returns a new instance of Resolver.



7
8
9
10
11
# File 'lib/hinge/resolver.rb', line 7

def initialize(container)
  @container = container
  @nodes = {}
  @resolved = {}
end

Instance Attribute Details

#containerObject (readonly)

Returns the value of attribute container.



12
13
14
# File 'lib/hinge/resolver.rb', line 12

def container
  @container
end

#resolvedObject (readonly)

Returns the value of attribute resolved.



13
14
15
# File 'lib/hinge/resolver.rb', line 13

def resolved
  @resolved
end

Instance Method Details

#resolve(name) ⇒ Object

Raises:

  • (ArgumentError)


15
16
17
18
19
20
21
22
23
24
# File 'lib/hinge/resolver.rb', line 15

def resolve(name)
  return resolved[name] if resolved.key?(name)

  raise ArgumentError unless name.is_a?(Symbol)

  node = node(name)
  populate_node(node)

  resolved[name]
end