Method: ATValidations::Predicates#atv_hash
- Defined in:
- lib/at-validations.rb
#atv_hash(mask, opts = {}) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/at-validations.rb', line 36 def atv_hash(mask, opts = {}) atv_union( atv_instance_of(Hash), atv_block do |e| errors = {} mask.each do |k, v| r = v.call(e[k]) errors[k] = r unless true == r end if false == opts[:allow_extra] && (extra = (e.keys - mask.keys)).count > 0 extra.each {|k| errors[k] = 'is not present in predicate' } end errors.empty? || Error.new(:error => 'must match hash predicate', :failures => errors) end ) end |