Class: Sequent::Core::Helpers::ValueValidators

Inherits:
Object
  • Object
show all
Defined in:
lib/sequent/core/helpers/value_validators.rb

Constant Summary collapse

VALIDATORS =
{
  ::Symbol => ->(_) { true },
  ::String => ->(value) { value.nil? || value.is_a?(String) },
  ::Integer => ->(value) { valid_integer?(value) },
  ::Boolean => ->(value) { valid_bool?(value) },
  ::Date => ->(value) { valid_date?(value) },
  ::DateTime => ->(value) { valid_date_time?(value) }
}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass) ⇒ ValueValidators

Returns a new instance of ValueValidators.



43
44
45
# File 'lib/sequent/core/helpers/value_validators.rb', line 43

def initialize(klass)
  @klass = klass
end

Class Method Details

.for(klass) ⇒ Object



39
40
41
# File 'lib/sequent/core/helpers/value_validators.rb', line 39

def self.for(klass)
  new(klass)
end

.valid_bool?(value) ⇒ Boolean

Returns:



22
23
24
25
# File 'lib/sequent/core/helpers/value_validators.rb', line 22

def self.valid_bool?(value)
  return true if value.blank?
  value.is_a?(TrueClass) || value.is_a?(FalseClass) || value == "true" || value == "false"
end

.valid_date?(value) ⇒ Boolean

Returns:



27
28
29
30
31
32
# File 'lib/sequent/core/helpers/value_validators.rb', line 27

def self.valid_date?(value)
  return true if value.blank?
  return true if value.is_a?(Date)
  return false unless value =~ /\d{4}-\d{2}-\d{2}/
  !!Date.iso8601(value) rescue false
end

.valid_date_time?(value) ⇒ Boolean

Returns:



34
35
36
37
# File 'lib/sequent/core/helpers/value_validators.rb', line 34

def self.valid_date_time?(value)
  return true if value.blank?
  value.is_a?(DateTime) || !!DateTime.iso8601(value.dup) rescue false
end

.valid_integer?(value) ⇒ Boolean

Returns:



16
17
18
19
20
# File 'lib/sequent/core/helpers/value_validators.rb', line 16

def self.valid_integer?(value)
  value.blank? || Integer(value)
rescue
  false
end

Instance Method Details

#valid_value?(value) ⇒ Boolean

Returns:



47
48
49
# File 'lib/sequent/core/helpers/value_validators.rb', line 47

def valid_value?(value)
  VALIDATORS[@klass].call(value)
end