Sha256: cde4bd95402681ae9254c4d41e5d23b36cf15b85307ab148fa766788540290ad

Contents?: true

Size: 1.46 KB

Versions: 97

Compression:

Stored size: 1.46 KB

Contents

module CC
  class Config
    module Validation
      module HashValidations
        def validate_hash_data
          unless data.is_a?(Hash)
            errors << "Config file should contain a hash, not a #{data.class.to_s.downcase}"
            return false
          end
          true
        end

        def validate_key_type(key, types)
          if types.is_a?(Class)
            return validate_key_type(key, [types])
          elsif data.key?(key)
            unless types.include?(data[key].class)
              errors << key_type_error_message(key, types)
              return false
            end
          end
          true
        end

        def key_type_error_message(key, types)
          if types.one?
            klass_name = types[0].to_s.downcase
            article =
              if klass_name[0] == "a"
                "an"
              else
                "a"
              end
            "'#{key}' must be #{article} #{klass_name}"
          elsif types == [TrueClass, FalseClass]
            "'#{key}' must be a boolean"
          else
            type_names = types.map(&:to_s).map(&:downcase)
            "'#{key}' must be one of #{type_names.join(", ")}"
          end
        end

        def warn_unrecognized_keys(recognized_keys)
          unknown_keys = data.keys.reject { |k| recognized_keys.include?(k) }
          unknown_keys.each do |key|
            warnings << "unrecognized key '#{key}'"
          end
        end
      end
    end
  end
end

Version data entries

97 entries across 97 versions & 2 rubygems

Version Path
codeclimate-0.96.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.95.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.94.1 lib/cc/config/validation/hash_validations.rb
codeclimate-0.94.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.93.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.92.1 lib/cc/config/validation/hash_validations.rb
codeclimate-0.92.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.91.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.90.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.89.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.88.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.87.5 lib/cc/config/validation/hash_validations.rb
codeclimate-0.87.4 lib/cc/config/validation/hash_validations.rb
codeclimate-0.87.3 lib/cc/config/validation/hash_validations.rb
codeclimate-0.87.2 lib/cc/config/validation/hash_validations.rb
codeclimate-0.87.1 lib/cc/config/validation/hash_validations.rb
codeclimate-0.87.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.86.0 lib/cc/config/validation/hash_validations.rb
codeclimate-0.85.29 lib/cc/config/validation/hash_validations.rb
codeclimate-0.85.28 lib/cc/config/validation/hash_validations.rb