Module: Olyx::Guardrails::Validation

Defined in:
lib/olyx/guardrails/validation.rb

Overview

Shared internal validators for public collection arguments.

Class Method Summary collapse

Class Method Details

.array_of!(value, item_class, name:) ⇒ Object

Raises:

  • (ArgumentError)


7
8
9
10
11
12
# File 'lib/olyx/guardrails/validation.rb', line 7

def self.array_of!(value, item_class, name:)
  valid = value.is_a?(Array) && value.all?(item_class)
  return value if valid

  raise ArgumentError, "#{name} must be an Array of #{item_class} values"
end

.boolean!(value, name:) ⇒ Object

Raises:

  • (ArgumentError)


14
15
16
17
18
# File 'lib/olyx/guardrails/validation.rb', line 14

def self.boolean!(value, name:)
  return value if [true, false].include?(value)

  raise ArgumentError, "#{name} must be true or false"
end

.callable_or_nil!(value, name:) ⇒ Object

Raises:

  • (ArgumentError)


32
33
34
35
36
# File 'lib/olyx/guardrails/validation.rb', line 32

def self.callable_or_nil!(value, name:)
  return value if value.nil? || value.respond_to?(:call)

  raise ArgumentError, "#{name} must respond to call"
end

.hash!(value, name:) ⇒ Object

Raises:

  • (ArgumentError)


20
21
22
23
24
# File 'lib/olyx/guardrails/validation.rb', line 20

def self.hash!(value, name:)
  return value if value.is_a?(Hash)

  raise ArgumentError, "#{name} must be a Hash"
end

.non_negative_integer!(value, name:) ⇒ Object

Raises:

  • (ArgumentError)


26
27
28
29
30
# File 'lib/olyx/guardrails/validation.rb', line 26

def self.non_negative_integer!(value, name:)
  return value if value.is_a?(Integer) && value >= 0

  raise ArgumentError, "#{name} must be a non-negative Integer"
end