Class: Bparity::Formal::ContractChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/bparity/formal/contract.rb

Instance Method Summary collapse

Constructor Details

#initialize(compiler: ContractCompiler.new) ⇒ ContractChecker

Returns a new instance of ContractChecker.



64
65
66
# File 'lib/bparity/formal/contract.rb', line 64

def initialize(compiler: ContractCompiler.new)
  @compiler = compiler
end

Instance Method Details

#check(invariants, context) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/bparity/formal/contract.rb', line 68

def check(invariants, context)
  invariants.filter_map do |invariant|
    predicate = @compiler.compile(invariant.fetch("expr"))
    next if predicate.call(context)

    { "id" => invariant["id"], "expression" => invariant["expr"], "input" => context }
  rescue StandardError => e
    { "id" => invariant["id"], "expression" => invariant["expr"], "error" => e.message,
      "input" => context }
  end
end