class Lev::Errors

A collection of Error objects.

Attributes

raise_fatal_errors[R]
routine_status[R]

Public Class Methods

new(routine_status = nil, raise_fatal_errors = false) click to toggle source
# File lib/lev/errors.rb, line 7
def initialize(routine_status = nil, raise_fatal_errors = false)
  @routine_status = routine_status || NullStatus.new
  @raise_fatal_errors = raise_fatal_errors
end

Public Instance Methods

[](key) click to toggle source
# File lib/lev/errors.rb, line 43
def [](key)
  self[key]
end
add(fail, args={}) click to toggle source
# File lib/lev/errors.rb, line 12
def add(fail, args={})
  args[:kind] ||= :lev
  error = Error.new(args)

  return if ignored_error_procs.any?{|proc| proc.call(error)}
  self.push(error)

  routine_status.add_error(error)

  if fail
    routine_status.failed!

    if raise_fatal_errors
      # Use special FatalError type so Routine doesn't re-add status errors
      raise Lev::FatalError, args.to_a.map { |i| i.join(' ') }.join(' - ')
    else
      throw :fatal_errors_encountered
    end
  end
end
full_messages() click to toggle source
# File lib/lev/errors.rb, line 56
def full_messages
  map(&:full_message)
end
has_offending_input?(input) click to toggle source

Checks to see if the provided input is associated with one of the errors.

# File lib/lev/errors.rb, line 48
def has_offending_input?(input)
  self.any? {|error| [error.offending_inputs].flatten.include? input}
end
ignore(arg) click to toggle source
# File lib/lev/errors.rb, line 33
def ignore(arg)
  proc = arg.is_a?(Symbol) ?
           Proc.new{|error| error.code == arg} :
           arg

  raise Lev.configuration.illegal_argument_error if !proc.respond_to?(:call)

  ignored_error_procs.push(proc)
end
raise_exception_if_any!(exception_type = StandardError) click to toggle source
# File lib/lev/errors.rb, line 52
def raise_exception_if_any!(exception_type = StandardError)
  raise exception_type, map(&:message).join('; ') if any?
end

Protected Instance Methods

ignored_error_procs() click to toggle source
# File lib/lev/errors.rb, line 65
def ignored_error_procs
  @ignored_error_procs ||= []
end