Class: SorbetBaml::DependencyResolver

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/sorbet_baml/dependency_resolver.rb

Overview

Resolves dependencies between T::Struct types and orders them topologically

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDependencyResolver

Returns a new instance of DependencyResolver.



17
18
19
20
# File 'lib/sorbet_baml/dependency_resolver.rb', line 17

def initialize
  @visited = T.let(Set.new, T::Set[T.class_of(T::Struct)])
  @dependencies = T.let([], T::Array[T.class_of(T::Struct)])
end

Class Method Details

.resolve_dependencies(klass) ⇒ Object



12
13
14
# File 'lib/sorbet_baml/dependency_resolver.rb', line 12

def self.resolve_dependencies(klass)
  new.resolve_dependencies(klass)
end

Instance Method Details

#resolve_dependencies(klass) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/sorbet_baml/dependency_resolver.rb', line 23

def resolve_dependencies(klass)
  @visited.clear
  @dependencies.clear

  # Perform depth-first search to find all dependencies
  visit(klass)

  # Dependencies are already in correct topological order
  # (dependencies first, then the types that depend on them)
  @dependencies
end