module Axiom::Types::ValueComparable

Add a minimum and maximum value constraint to a type

Attributes

range[R]

The range of allowed values

@return [Range]

@api public

Public Class Methods

extended(descendant) click to toggle source

Hook called when module is extended

Add minimum and maximum DSL methods to descendant.

@param [Class<Axiom::Types::Type>] descendant

@return [undefined]

@api private

Calls superclass method
# File lib/axiom/types/value_comparable.rb, line 25
def self.extended(descendant)
  super
  descendant.accept_options :minimum, :maximum
end

Public Instance Methods

finalize() click to toggle source

Finalize by setting up a value range constraint

@return [Axiom::Types::ValueComparable]

@api private

Calls superclass method
# File lib/axiom/types/value_comparable.rb, line 35
def finalize
  return self if frozen?
  @range = IceNine.deep_freeze(minimum..maximum)
  use_value_within_range
  super
end

Private Instance Methods

use_value_within_range() click to toggle source

Add a constraint for a value within a range

@return [undefined]

@todo freeze the minimum and maximum

@api private

# File lib/axiom/types/value_comparable.rb, line 51
def use_value_within_range
  constraint(range.method(:cover?))
end