Class: GrapeOAS::Introspectors::DryIntrospectorSupport::RuleIndex

Inherits:
Object
  • Object
show all
Defined in:
lib/grape_oas/introspectors/dry_introspector_support/rule_index.rb

Overview

Builds path-aware constraint and required field indexes from dry-schema AST

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(contract_schema) ⇒ RuleIndex

Returns a new instance of RuleIndex.



12
13
14
15
16
17
18
19
# File 'lib/grape_oas/introspectors/dry_introspector_support/rule_index.rb', line 12

def initialize(contract_schema)
  @walker = AstWalker.new(ConstraintExtractor::ConstraintSet)
  @merger = ConstraintMerger
  @constraints_by_path = {}
  @required_by_object_path = Hash.new { |h, k| h[k] = {} }

  build_indexes(contract_schema)
end

Class Method Details

.build(contract_schema) ⇒ Object



21
22
23
# File 'lib/grape_oas/introspectors/dry_introspector_support/rule_index.rb', line 21

def self.build(contract_schema)
  new(contract_schema).to_a
end

Instance Method Details

#to_aObject



25
26
27
# File 'lib/grape_oas/introspectors/dry_introspector_support/rule_index.rb', line 25

def to_a
  [@constraints_by_path, @required_by_object_path.transform_values(&:keys)]
end