Sha256: 62ef19d6e3e2b66eb08d0f7e748d7ac0f990854e17559381083dc36328c07636

Contents?: true

Size: 551 Bytes

Versions: 1

Compression:

Stored size: 551 Bytes

Contents

require_relative '../abstract_validator'

module StValidation
  module Validators
    class HashValidator < AbstractValidator
      def initialize(blueprint, factory)
        @validators = blueprint.map { |k, bp| [k, factory.build(bp)] }.to_h
      end

      def call(value)
        return false unless value.is_a?(Hash) &&
                            (value.keys - validators.keys).empty?

        validators.each { |k, v| return false unless v.call(value[k]) }
        true
      end

      private

      attr_reader :validators
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
st_validation-0.1.0 lib/st_validation/validators/hash_validator.rb