class Attributor::Integer

Constants

EXAMPLE_RANGE

Public Class Methods

example(_context = nil, options: {}) click to toggle source
# File lib/attributor/types/integer.rb, line 13
def self.example(_context = nil, options: {})
  validate_options(options)

  # Set default values
  if options[:min].nil? && options[:max].nil?
    min = 0
    max = EXAMPLE_RANGE
  elsif options[:min].nil?
    max = options[:max]
    min = max - EXAMPLE_RANGE
  elsif options[:max].nil?
    min = options[:min]
    max = min + EXAMPLE_RANGE
  else
    min = options[:min]
    max = options[:max]
  end

  # Generate random number on interval [min,max]
  rand(max - min + 1) + min
end
json_schema_type() click to toggle source
# File lib/attributor/types/integer.rb, line 59
def self.json_schema_type
  :integer
end
load(value, context = Attributor::DEFAULT_ROOT_CONTEXT, **options) click to toggle source
Calls superclass method
# File lib/attributor/types/integer.rb, line 35
def self.load(value, context = Attributor::DEFAULT_ROOT_CONTEXT, **options)
  Integer(value)
rescue TypeError
  super
end
native_type() click to toggle source
# File lib/attributor/types/integer.rb, line 9
def self.native_type
  ::Integer
end
validate_options(options) click to toggle source
# File lib/attributor/types/integer.rb, line 41
def self.validate_options(options)
  if options.key?(:min) && options.key?(:max)
    # Both :max and :min must be integers
    raise AttributorException, "Invalid range: [#{options[:min].inspect}, #{options[:max].inspect}]" if !options[:min].is_a?(::Integer) || !options[:max].is_a?(::Integer)

    # :max cannot be less than :min
    raise AttributorException, "Invalid range: [#{options[:min].inspect}, #{options[:max].inspect}]" if options[:max] < options[:min]
  elsif !options.key?(:min) && options.key?(:max)
    # :max must be an integer
    raise AttributorException, "Invalid range: [, #{options[:max].inspect}]" unless options[:max].is_a?(::Integer)
  elsif options.key?(:min) && !options.key?(:max)
    # :min must be an integer
    raise AttributorException, "Invalid range: [#{options[:min].inspect},]" unless options[:min].is_a?(::Integer)
    # Neither :min nor :max were given, noop
  end
  true
end