Class: Ukiryu::Validation::CardinalityConstraint

Inherits:
Constraint
  • Object
show all
Defined in:
lib/ukiryu/validation/constraints.rb

Overview

Validates cardinality constraints for variadic arguments

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Constraint

#applies_to?

Constructor Details

#initialize(attribute_name, min:, max:) ⇒ CardinalityConstraint

Returns a new instance of CardinalityConstraint.

Parameters:

  • attribute_name (String, Symbol)

    the attribute name

  • min (Integer)

    minimum cardinality

  • max (Integer, Float)

    maximum cardinality (Float::INFINITY for no limit)



145
146
147
148
149
# File 'lib/ukiryu/validation/constraints.rb', line 145

def initialize(attribute_name, min:, max:)
  @attribute_name = attribute_name
  @min = min
  @max = max
end

Instance Attribute Details

#attribute_nameObject (readonly)

Returns the value of attribute attribute_name.



140
141
142
# File 'lib/ukiryu/validation/constraints.rb', line 140

def attribute_name
  @attribute_name
end

#maxObject (readonly)

Returns the value of attribute max.



140
141
142
# File 'lib/ukiryu/validation/constraints.rb', line 140

def max
  @max
end

#minObject (readonly)

Returns the value of attribute min.



140
141
142
# File 'lib/ukiryu/validation/constraints.rb', line 140

def min
  @min
end

Instance Method Details

#validate(value, _context = {}) ⇒ Object

Raises:

  • (ValidationError)

    if array size violates cardinality



152
153
154
155
156
157
158
159
# File 'lib/ukiryu/validation/constraints.rb', line 152

def validate(value, _context = {})
  return if value.nil? || !value.is_a?(Array)

  return unless @max != Float::INFINITY && value.size > @max

  raise ValidationIssue.new(@attribute_name, :cardinality,
                            "Too many values for #{@attribute_name}: got #{value.size}, max #{@max}")
end