Sha256: a3345e580b1b4ed981a8e1eb7b095a5d64419ee02f061fd6324999c61d6d2fc5
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
# frozen_string_literal: true module BCDD::Contract module Map::Pairs class Checking include Core::Checking def initialize(schema, value) @value = value @errors = [] validate(schema.to_a.flatten(1), @errors) end def errors_message valid? ? '' : errors.map { |msg| "(#{msg})" }.join('; ') end private def validate(schema_key_and_value, errors) skey, sval = schema_key_and_value errors << "#{value.inspect} must be a Hash" and return unless value.is_a?(::Hash) errors << 'is empty' and return if value.empty? value.each do |vkey, vval| key_checking = skey[vkey] errors << "key: #{key_checking.errors_message}" and next if key_checking.invalid? val_checking = sval[vval] errors << "#{vkey}: #{val_checking.errors_message}" and next if val_checking.invalid? end end end module Checker include Core::Checker end def self.new(strategy) Core::Factory.new(Checker, Checking, strategy) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bcdd-contract-0.1.0 | lib/bcdd/contract/map/pairs.rb |