class Errawr::Error

Attributes

context[R]
key[R]
metadata[R]

Public Class Methods

new(key = :unknown, context = {}) click to toggle source
# File lib/errawr/error.rb, line 5
def initialize(key = :unknown, context = {})
  @key = key
  @context = context.dup
  @metadata = {}
  @i18n = I18n.t('errawr.' + @key.to_s)
  update_context(@context)
end

Public Instance Methods

message() click to toggle source
# File lib/errawr/error.rb, line 13
def message
  process_message
end
update_context(context) click to toggle source
# File lib/errawr/error.rb, line 17
def update_context(context)
  process_context(context)
end

Private Instance Methods

process_context(context) click to toggle source
# File lib/errawr/error.rb, line 23
def process_context(context)
  @message_overridden = context.include?(:message)
  if @i18n.is_a?(Hash)
    @context.merge!(@i18n.merge(context))
  else
    @context.merge!(context)
  end
  @metadata.merge!(@context.delete(:metadata)) if @context.key?(:metadata)
end
process_message() click to toggle source
# File lib/errawr/error.rb, line 33
def process_message
  return @context[:message] if @message_overridden
  if @i18n.is_a?(Hash)
    key = 'errawr.' + @key.to_s + '.message'
    @context[:message] = I18n.t(key, @context.merge({ default: I18n.t('errawr.unknown', @context) }))
  else
    @context[:message] = I18n.t('errawr.' + @key.to_s, @context) unless @context[:message]
  end
  @context[:message]
end