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

Inherits:
Dry::Data::Type show all
Defined in:
lib/dry/data/type.rb,
lib/dry/data/type/constrained.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, #optional, passthrough_constructor, strict_constructor, #|

Constructor Details

#initialize(constructor, primitive, rule) ⇒ Constrained

Returns a new instance of Constrained.



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

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

Instance Attribute Details

#ruleObject (readonly)

Returns the value of attribute rule.



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

def rule
  @rule
end

Instance Method Details

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



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

def call(input)
  result = super(input)

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

#valid?(input) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/dry/data/type/constrained.rb', line 25

def valid?(input)
  super && rule.(input).success?
end