Module: Julewire::Core::Validation
- Defined in:
- lib/julewire/core/validation.rb
Class Method Summary collapse
- .valid_integer_limit?(value, positive:) ⇒ Boolean
- .valid_numeric_timeout?(timeout) ⇒ Boolean
- .validate_byte_limit!(value, name:) ⇒ Object
- .validate_callable!(value, name:, allow_nil: false) ⇒ Object
- .validate_integer_limit!(value, name:, positive: false) ⇒ Object
- .validate_non_negative_integer!(value, name:) ⇒ Object
- .validate_options!(options, allowed_keys, name:) ⇒ Object
- .validate_symbol_choice!(value, name:, choices:) ⇒ Object
- .validate_timeout!(timeout, name:) ⇒ Object
Class Method Details
.valid_integer_limit?(value, positive:) ⇒ Boolean
61 62 63 |
# File 'lib/julewire/core/validation.rb', line 61 def valid_integer_limit?(value, positive:) positive ? value.positive? : value >= 0 end |
.valid_numeric_timeout?(timeout) ⇒ Boolean
55 56 57 58 59 |
# File 'lib/julewire/core/validation.rb', line 55 def valid_numeric_timeout?(timeout) timeout.is_a?(Numeric) && timeout.finite? && timeout >= 0 rescue StandardError false end |
.validate_byte_limit!(value, name:) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/julewire/core/validation.rb', line 8 def validate_byte_limit!(value, name:) return if value.nil? validate_integer_limit!(value, name: name, positive: true) rescue ArgumentError raise ArgumentError, "#{name} must be nil or a positive Integer" end |
.validate_callable!(value, name:, allow_nil: false) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/julewire/core/validation.rb', line 27 def validate_callable!(value, name:, allow_nil: false) return if allow_nil && value.nil? return if value.respond_to?(:call) raise ArgumentError, "#{name} must respond to #call" end |
.validate_integer_limit!(value, name:, positive: false) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/julewire/core/validation.rb', line 20 def validate_integer_limit!(value, name:, positive: false) return value if value.is_a?(Integer) && valid_integer_limit?(value, positive: positive) qualifier = positive ? "positive" : "non-negative" raise ArgumentError, "#{name} must be a #{qualifier} Integer" end |
.validate_non_negative_integer!(value, name:) ⇒ Object
16 17 18 |
# File 'lib/julewire/core/validation.rb', line 16 def validate_non_negative_integer!(value, name:) validate_integer_limit!(value, name: name) end |
.validate_options!(options, allowed_keys, name:) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/julewire/core/validation.rb', line 34 def (, allowed_keys, name:) = .keys - allowed_keys return if .empty? raise ArgumentError, "unknown #{name} options: #{.join(", ")}" end |
.validate_symbol_choice!(value, name:, choices:) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/julewire/core/validation.rb', line 41 def validate_symbol_choice!(value, name:, choices:) choice = value.to_sym if value.respond_to?(:to_sym) return choice if choices.include?(choice) raise ArgumentError, "#{name} must be one of: #{choices.join(", ")}" end |
.validate_timeout!(timeout, name:) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/julewire/core/validation.rb', line 48 def validate_timeout!(timeout, name:) return if timeout.nil? return if valid_numeric_timeout?(timeout) raise ArgumentError, "#{name} must be nil or a non-negative finite Numeric" end |