class Errapi::ValidationContext

Attributes

config[R]
data[R]
errors[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/errapi/validation_context.rb, line 8
def initialize options = {}
  @errors = []
  @data = OpenStruct.new options[:data] || {}
  @config = options[:config]
end

Public Instance Methods

add_error(options = {}) { |error| ... } click to toggle source
# File lib/errapi/validation_context.rb, line 14
def add_error options = {}, &block

  error = options.kind_of?(Errapi::ValidationError) ? options : @config.new_error(options)
  yield error if block_given?
  @config.build_error error, self

  @errors << error
  self
end
clear() click to toggle source
# File lib/errapi/validation_context.rb, line 33
def clear
  @errors.clear
  @data = OpenStruct.new
end
errors?(criteria = {}) click to toggle source
# File lib/errapi/validation_context.rb, line 24
def errors? criteria = {}, &block
  return !@errors.empty? if criteria.empty? && !block
  block ? @errors.any?{ |err| err.matches?(criteria) && block.call(err) } : @errors.any?{ |err| err.matches?(criteria) }
end
serialize() click to toggle source

TODO: add custom serialization options

# File lib/errapi/validation_context.rb, line 39
def serialize
  # TODO: add hook for plugins to serialize context
  { errors: [] }.tap do |h|
    @errors.each do |error|
      serialized = {}
      @config.serialize_error error, serialized
      h[:errors] << serialized
    end
  end
end
valid?() click to toggle source
# File lib/errapi/validation_context.rb, line 29
def valid?
  !errors?
end