Sha256: 66cd978abea32c17bd9efdfc944bda4d486dc6f04926484ab5d945e00099a45d
Contents?: true
Size: 1021 Bytes
Versions: 1
Compression:
Stored size: 1021 Bytes
Contents
# frozen_string_literal: true module Speculation # @private class PredicateSpec < Spec include NamespacedSymbols S = Speculation def initialize(predicate, should_conform) @predicate = predicate @should_conform = should_conform end def conform(value) ret = case @predicate when Set then @predicate.include?(value) when Regexp, Module then @predicate === value else @predicate.call(value) end if @should_conform ret else ret ? value : S::INVALID end end def explain(path, via, inn, value) if S.invalid?(S.dt(@predicate, value)) [{ :path => path, :val => value, :via => via, :in => inn, :pred => [@predicate, [value]] }] end end def gen(_, _, _) if @gen @gen else Gen.gen_for_pred(@predicate) end end def inspect "#{self.class}(#{@name || @predicate.inspect})" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
speculation-0.3.0 | lib/speculation/spec/predicate_spec.rb |