Class: GrapeOAS::Introspectors::DryIntrospectorSupport::ConstraintExtractor

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

Overview

Extracts constraint information from Dry::Schema AST nodes. Delegates AST walking to AstWalker and merging to ConstraintMerger.

Defined Under Namespace

Classes: ConstraintSet

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(contract) ⇒ ConstraintExtractor

Returns a new instance of ConstraintExtractor.



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

def initialize(contract)
  @contract = contract
  @ast_walker = AstWalker.new(ConstraintSet)
end

Class Method Details

.extract(contract) ⇒ Object



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

def self.extract(contract)
  new(contract).extract
end

Instance Method Details

#extractObject



30
31
32
33
34
35
36
37
38
39
# File 'lib/grape_oas/introspectors/dry_introspector_support/constraint_extractor.rb', line 30

def extract
  constraints = Hash.new { |h, k| h[k] = ConstraintSet.new(unhandled_predicates: []) }

  extract_from_rules(constraints)
  extract_from_types(constraints)

  constraints
rescue NoMethodError, TypeError
  {}
end