module Errapi::Validations::Clusivity
Constants
- DELIMITER_METHOD_CHECKS
Private Instance Methods
check_delimiter!(option_desc)
click to toggle source
# File lib/errapi/validations/clusivity.rb, line 7 def check_delimiter! option_desc unless @delimiter.respond_to?(:include?) || callable_option_value?(@delimiter) raise callable_option_type_error option_desc, "an object with the #include? method", @delimiter end end
include?(members, value)
click to toggle source
# File lib/errapi/validations/clusivity.rb, line 23 def include? members, value members.send inclusion_method(members), value end
inclusion_method(enumerable)
click to toggle source
From rails/activemodel/lib/active_model/validations/clusivity.rb: In Ruby 1.9 Range#include?
on non-number-or-time-ish ranges checks all possible values in the range for equality, which is slower but more accurate. Range#cover?
uses the previous logic of comparing a value with the range endpoints, which is fast but is only accurate on Numeric, Time, or DateTime ranges.
# File lib/errapi/validations/clusivity.rb, line 32 def inclusion_method enumerable if enumerable.is_a? Range case enumerable.first when Numeric, Time, DateTime :cover? else :include? end else :include? end end
members(option_desc, options = {})
click to toggle source
# File lib/errapi/validations/clusivity.rb, line 13 def members option_desc, options = {} enumerable = actual_option_value @delimiter, options unless enumerable.respond_to? :include? raise callable_option_value_error option_desc, "an object with the #include? method", @delimiter end enumerable end