module Validate::Constraints

Constants

HOSTNAME_REGEXP
UUID_REGEXP

Public Class Methods

define(name, **defaults, &body) click to toggle source
# File lib/validate/constraints.rb, line 16
def self.define(name, **defaults, &body)
  if @reserved_names.include?(name)
    raise Error::ArgumentError,
          "#{name} is already defined"
  end

  @reserved_names[name] = name
  constraint_class = Constraint.create_class(name, **defaults, &body)
  Constraints.const_set(Helpers.camelize(name), constraint_class)
  define_method(name, &constraint_class.method(:new))
  module_function(name)
end

Public Instance Methods

describe_length() click to toggle source
# File lib/validate/constraints.rb, line 93
def describe_length
  if options[:max] == options[:min]
    options[:max].to_s
  elsif options[:max].nil?
    "at least #{options[:min]}"
  elsif options[:min].nil?
    "at most #{options[:max]}"
  else
    "at least #{options[:min]} and at most #{options[:max]}"
  end
end
describe_presence() click to toggle source
# File lib/validate/constraints.rb, line 161
def describe_presence
  case options[:values]
  when ::Hash
    "one of #{options[:values].keys}"
  when ::Range
    "covered by #{options[:values]}"
  else
    "one of #{options[:values]}"
  end
end
describe_unique_attribute() click to toggle source
# File lib/validate/constraints.rb, line 506
def describe_unique_attribute
  options[:attribute] || 'values'
end