class Schematrix::Compiler
Drives schema compilation with a worklist. Starting from the input files, it visits each discovered locator exactly once, following $ref edges on demand. Only schemas actually reachable from the inputs are compiled.
Public Class Methods
# File lib/schematrix/compiler.rb, line 15 def initialize( store: DocumentStore.new, closed_shapes: false, enums_classes: false, max_compilation_work: CompilationBudget::DEFAULT_LIMIT ) @store = store @budget = CompilationBudget.new(max_compilation_work) @closed_shapes = closed_shapes @enums_classes = enums_classes @queue = [] @seen = Set.new @objects = {} end
store is the Schematrix::DocumentStore every visitor shares. closed_shapes treats an absent additionalProperties as false (closed classes), instead of the spec’s open default.
Public Instance Methods
Source
# File lib/schematrix/compiler.rb, line 34 def compile(input_files) input_files.each { |file| discover(root_locator(file)) } visit(@queue.shift) until @queue.empty? @objects end