Sha256: f42329a35d37708e67c492940ece9091a22a7f34211b7460b9b19a55a4b732a8

Contents?: true

Size: 850 Bytes

Versions: 5

Compression:

Stored size: 850 Bytes

Contents

class Errors
  def initialize
    @errors = {}
  end
  
  def inspect
    @errors.inspect
  end
  
  def [](name)
    @errors[name] ||= []
    @errors[name]
  end
  
  def []=(name, value)
    return if value.nil?
    @errors[name] = value
  end
  
  def key?(name)
    @errors.key?(name)
  end
  
  def empty?
    @errors.empty?
  end
  
  def clear
    @errors.clear
    @summary = nil
  end
  
  # errors on a collection
  def <<(error)
    self['_'] << error
  end
  
  def summarise
    @summary ||= @errors.each_with_object({}) do |(field, errors), hash|
      if errors.respond_to?(:summarise)
        hash[field.to_s] = errors.summarise.values.to_sentence
      else
        hash[field.to_s] = "#{field.to_s.humanize} #{errors.collect(&:describe).to_sentence}"
      end
    end
  end
  
  def to_json(*a)
    summarise.to_json(*a)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
yodel-0.0.7 lib/yodel/models/core/validations/errors.rb
yodel-0.0.4 lib/yodel/models/core/validations/errors.rb
yodel-0.0.3 lib/yodel/models/core/validations/errors.rb
yodel-0.0.2 lib/yodel/models/core/validations/errors.rb
yodel-0.0.1 lib/yodel/models/core/validations/errors.rb