Class: Shadwire::Resolver

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

Overview

Resolves a list of item names to a de-duplicated, dependency-first ordered array of parsed item hashes. Uses post-order DFS so every dependency appears before the item that requires it. Unknown names — whether top-level or pulled in transitively — raise Shadwire::RegistryError.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Resolver

Returns a new instance of Resolver.



14
15
16
17
18
# File 'lib/shadwire/resolver.rb', line 14

def initialize(client)
  @client  = client
  @visited = {}   # name => true once fully processed
  @result  = []
end

Class Method Details

.expand(names, client) ⇒ Object

Public API: returns an Array of item Hashes, dependency-first.



10
11
12
# File 'lib/shadwire/resolver.rb', line 10

def self.expand(names, client)
  new(client).expand(names)
end

Instance Method Details

#expand(names) ⇒ Object



20
21
22
23
# File 'lib/shadwire/resolver.rb', line 20

def expand(names)
  names.each { |name| visit(name) }
  @result
end