Class: Errapi::Validations::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/errapi/validations.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Base

Returns a new instance of Base.



5
6
# File 'lib/errapi/validations.rb', line 5

def initialize options = {}
end

Instance Method Details

#actual_option_value(supplied_value, options) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/errapi/validations.rb', line 8

def actual_option_value supplied_value, options
  if supplied_value.respond_to? :call
    supplied_value.call options[:source]
  elsif supplied_value.respond_to? :to_sym
    unless options[:source].respond_to? supplied_value
      raise ArgumentError, "The validation source (#{options[:source].class.name}) does not respond to :#{supplied_value}."
    else
      options[:source].send supplied_value
    end
  else
    supplied_value
  end
end

#callable_option_type_error(key_desc, value_desc, supplied_value) ⇒ Object



31
32
33
# File 'lib/errapi/validations.rb', line 31

def callable_option_type_error key_desc, value_desc, supplied_value
  ArgumentError.new "The #{key_desc} option must be #{value_desc}, a proc, a lambda or a symbol, but a #{supplied_value.class.name} was given."
end

#callable_option_value?(supplied_value) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/errapi/validations.rb', line 22

def callable_option_value? supplied_value
  supplied_value.respond_to?(:call) || supplied_value.respond_to?(:to_sym)
end

#callable_option_value_error(key_desc, type_desc, supplied_value) ⇒ Object



35
36
37
# File 'lib/errapi/validations.rb', line 35

def callable_option_value_error key_desc, type_desc, supplied_value
  ArgumentError.new "The call supplied to #{key_desc} must return #{type_desc}, but a #{supplied_value.class.name} was returned."
end

#exactly_one_option?(keys, options) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
29
# File 'lib/errapi/validations.rb', line 26

def exactly_one_option? keys, options
  found_keys = options.keys.select{ |k| keys.include? k }
  found_keys.length == 1 ? found_keys.first : false
end