Class: Dry::Data::Type::Constrained

Inherits:
Dry::Data::Type show all
Defined in:
lib/dry/data/type.rb

Instance Attribute Summary collapse

Attributes inherited from Dry::Data::Type

#constructor, #primitive

Instance Method Summary collapse

Methods inherited from Dry::Data::Type

[], #constrained, #enum, #name, passthrough_constructor, strict_constructor, #valid?, #|

Constructor Details

#initialize(constructor, primitive, rule) ⇒ Constrained

Returns a new instance of Constrained.



18
19
20
21
# File 'lib/dry/data/type.rb', line 18

def initialize(constructor, primitive, rule)
  super(constructor, primitive)
  @rule = rule
end

Instance Attribute Details

#ruleObject (readonly)

Returns the value of attribute rule.



16
17
18
# File 'lib/dry/data/type.rb', line 16

def rule
  @rule
end

Instance Method Details

#call(input) ⇒ Object Also known as: []



23
24
25
26
27
28
29
30
31
# File 'lib/dry/data/type.rb', line 23

def call(input)
  result = super(input)

  if rule.(result).success?
    result
  else
    raise ConstraintError, "#{input.inspect} violates constraints"
  end
end