Class: Zodra::Export::TypeAnalysis

Inherits:
Object
  • Object
show all
Defined in:
lib/zodra/export/type_analysis.rb

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(definitions) ⇒ TypeAnalysis

Returns a new instance of TypeAnalysis.



12
13
14
15
# File 'lib/zodra/export/type_analysis.rb', line 12

def initialize(definitions)
  @definitions_by_name = definitions.to_h { |d| [d.name, d] }
  @graph = build_graph
end

Class Method Details

.call(definitions) ⇒ Object



8
9
10
# File 'lib/zodra/export/type_analysis.rb', line 8

def self.call(definitions)
  new(definitions).analyze
end

Instance Method Details

#analyzeObject



17
18
19
20
21
# File 'lib/zodra/export/type_analysis.rb', line 17

def analyze
  cycles = detect_cycles
  sorted = topological_sort(cycles)
  Result.new(sorted:, cycles:)
end