Class: Trafaret::Mapping

Inherits:
Validator show all
Defined in:
lib/trafaret/validators.rb

Instance Attribute Summary

Attributes inherited from Validator

#converters, #options

Instance Method Summary collapse

Methods inherited from Validator

#&, #===, #add, #call, #convert, #failure, #initialize, #perform_convert, #to, #|

Constructor Details

This class inherits a constructor from Trafaret::Validator

Instance Method Details

#prepareObject



124
125
126
127
# File 'lib/trafaret/validators.rb', line 124

def prepare
  @key_validator = @args.first
  @value_validator = @args[1]
end

#validate(data) ⇒ Object



129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/trafaret/validators.rb', line 129

def validate(data)
  return failure('Not a Hash') unless data.is_a? ::Hash
  fails = []
  pairs = []
  data.each do |k, v|
    kv = @key_validator.call(k)
    vv = @value_validator.call(v)
    if (kv.is_a? Trafaret::Error) || (vv.is_a? Trafaret::Error)
      fails << [k, [kv, vv]]
    else
      pairs << [kv, vv]
    end
  end
  if fails.blank?
    Hash[pairs]
  else
    failure(Hash[fails])
  end
end