Class: Trafaret::Tuple

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, #convert, #failure, #initialize, #perform_convert, #to, #validate, #|

Constructor Details

This class inherits a constructor from Trafaret::Validator

Instance Method Details

#call(data) ⇒ Object



188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/trafaret/validators.rb', line 188

def call(data)
  return failure('Too many elements') if data.size > @size# && !@extra
  return failure('Not enough elements') if data.size < @size
  failures = {}
  result = []
  data[0..@size].each.with_index do |el, index|
    val = @validators[index].call(el)
    result << val
    failures[index] = val if val.is_a? Trafaret::Error
  end
  if failures.empty?
    result
  else
    failure(failures)
  end
end

#prepareObject



183
184
185
186
# File 'lib/trafaret/validators.rb', line 183

def prepare
  @validators = @args.map { |arg| Trafaret.get_instantiated_validator(arg) }
  @size = @validators.size
end