class Braintree::ValidationErrorCollection

Public Class Methods

new(data) click to toggle source
# File lib/braintree/validation_error_collection.rb, line 5
def initialize(data)
  return if !data.is_a? Hash
  @errors = (data[:errors] || {}).map { |hash| Braintree::ValidationError.new(hash) }
  @nested = {}
  data.keys.each do |key|
    next if key == :errors
    @nested[key] = ValidationErrorCollection.new(data[key])
  end
end

Public Instance Methods

[](index) click to toggle source

Accesses the error at the given index.

# File lib/braintree/validation_error_collection.rb, line 16
def [](index)
  @errors[index]
end
_inner_inspect(scope = []) click to toggle source
# File lib/braintree/validation_error_collection.rb, line 64
def _inner_inspect(scope = [])
  all = []
  scope_string = scope.join("/")
  if @errors.any?
    all << "#{scope_string}:[" + @errors.map { |e| "(#{e.code}) #{e.message}" }.join(", ") + "]"
  end
  @nested.each do |key, values|
    all << values._inner_inspect(scope + [key])
  end
  all.join(", ")
end
deep_errors() click to toggle source

Returns an array of ValidationError objects at this level and all nested levels in the error hierarchy

# File lib/braintree/validation_error_collection.rb, line 22
def deep_errors
  ([@errors] + @nested.values.map { |error_collection| error_collection.deep_errors }).flatten
end
deep_size() click to toggle source
# File lib/braintree/validation_error_collection.rb, line 26
def deep_size
  size + @nested.values.inject(0) { |count, error_collection| count + error_collection.deep_size }
end
each(&block) click to toggle source

Iterates over errors at the current level. Nested errors will not be yielded.

# File lib/braintree/validation_error_collection.rb, line 31
def each(&block)
  @errors.each(&block)
end
for(nested_key) click to toggle source

Returns a ValidationErrorCollection of errors nested under the given nested_key. Returns nil if there are not any errors nested under the given key.

# File lib/braintree/validation_error_collection.rb, line 37
def for(nested_key)
  @nested[nested_key]
end
for_index(index) click to toggle source
# File lib/braintree/validation_error_collection.rb, line 41
def for_index(index)
  self.for("index_#{index}".to_sym)
end
inspect() click to toggle source
# File lib/braintree/validation_error_collection.rb, line 45
def inspect
  "#<#{self.class} errors#{_inner_inspect}>"
end
on(attribute) click to toggle source

Returns an array of ValidationError objects on the given attribute.

# File lib/braintree/validation_error_collection.rb, line 50
def on(attribute)
  @errors.select { |error| error.attribute == attribute.to_s }
end
shallow_errors() click to toggle source

Returns an array of ValidationError objects at the given level in the error hierarchy

# File lib/braintree/validation_error_collection.rb, line 55
def shallow_errors
  @errors.dup
end
size() click to toggle source

The number of errors at this level. This does not include nested errors.

# File lib/braintree/validation_error_collection.rb, line 60
def size
  @errors.size
end