module Bashly::ValidationHelpers
This is a `ConfigValidator` concern responsible for providing basic assertion methods.
Protected Instance Methods
assert(valid, message)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 7 def assert(valid, message) raise ConfigurationError, message unless valid end
assert_array(key, value, of: nil)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 27 def assert_array(key, value, of: nil) return unless value assert value.is_a?(Array), "#{key} must be an array" return unless of value.each_with_index do |val, i| send "assert_#{of}".to_sym, "#{key}[#{i}]", val end end
assert_boolean(key, value)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 23 def assert_boolean(key, value) assert [true, false, nil].include?(value), "#{key} must be a boolean" end
assert_hash(key, value, keys: nil)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 38 def assert_hash(key, value, keys: nil) assert value.is_a?(Hash), "#{key} must be a hash" return unless keys invalid_keys = value.keys.map(&:to_sym) - keys assert invalid_keys.empty?, "#{key} contains invalid options: #{invalid_keys.join ', '}" end
assert_optional_string(key, value)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 19 def assert_optional_string(key, value) assert_string key, value if value end
assert_string(key, value)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 15 def assert_string(key, value) assert value.is_a?(String), "#{key} must be a string" end
assert_string_or_array(key, value)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 60 def assert_string_or_array(key, value) return unless value assert [Array, String].include?(value.class), "#{key} must be a string or an array" assert_array key, value, of: :string if value.is_a? Array end
assert_uniq(key, value, array_keys)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 47 def assert_uniq(key, value, array_keys) return unless value array_keys = [array_keys] unless array_keys.is_a? Array list = [] array_keys.each do |array_key| list += value.filter_map { |c| c[array_key] }.flatten end nonuniqs = list.nonuniq assert nonuniqs.empty?, "#{key} contains non-unique elements (#{nonuniqs.join ', '}) in #{array_keys.join ' or '}" end
refute(invalid, message)
click to toggle source
# File lib/bashly/concerns/validation_helpers.rb, line 11 def refute(invalid, message) assert !invalid, message end