Sha256: 69fae83cc11c1d9da8c144aa07d9c89c87bc977300a0b453f1caf582685df2d0
Contents?: true
Size: 740 Bytes
Versions: 3
Compression:
Stored size: 740 Bytes
Contents
require 'dry/data/constraints' module Dry module Data class Type class Constrained < Type attr_reader :rule def initialize(constructor, primitive, rule) super(constructor, primitive) @rule = rule end def call(input) result = super(input) if valid?(result) result else raise ConstraintError, "#{input.inspect} violates constraints" end end alias_method :[], :call def valid?(input) super && rule.(input).success? end end def constrained(options) Constrained.new(constructor, primitive, Data.Rule(primitive, options)) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-data-0.4.2 | lib/dry/data/type/constrained.rb |
dry-data-0.4.1 | lib/dry/data/type/constrained.rb |
dry-data-0.4.0 | lib/dry/data/type/constrained.rb |