Class: SorbetBaml::DependencyResolver
- Inherits:
-
Object
- Object
- SorbetBaml::DependencyResolver
- 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
-
#initialize ⇒ DependencyResolver
constructor
A new instance of DependencyResolver.
- #resolve_dependencies(klass) ⇒ Object
Constructor Details
#initialize ⇒ DependencyResolver
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 |