class Errors

Constants

DEFAULT_MESSAGE_MAP

Public Class Methods

new(errors, message_map = nil) click to toggle source
# File lib/composable_validations/errors.rb, line 2
def initialize(errors, message_map = nil)
  @errors = errors
  @message_map = DEFAULT_MESSAGE_MAP.merge(message_map || {})
end

Public Instance Methods

add(msg, path, object) click to toggle source
# File lib/composable_validations/errors.rb, line 7
def add(msg, path, object)
  merge(@errors, {join(path) => [render_message(msg, path, object)]})
end
to_hash() click to toggle source
# File lib/composable_validations/errors.rb, line 11
def to_hash
  @errors
end

Private Instance Methods

base_key() click to toggle source
# File lib/composable_validations/errors.rb, line 41
def base_key
  'base'
end
join(segments) click to toggle source
# File lib/composable_validations/errors.rb, line 33
def join(segments)
  if segments.empty?
    segments[0] = base_key
  end

  segments.compact.join(separator)
end
merge(e1, e2) click to toggle source
# File lib/composable_validations/errors.rb, line 27
def merge(e1, e2)
  e2.keys.each do |k, v|
    e1[k] = ((e1[k] || []) + (e2[k] || [])).uniq
  end
end
render_message(msg, path, object) click to toggle source
# File lib/composable_validations/errors.rb, line 17
def render_message(msg, path, object)
  message = Array(msg)
  message_builder = @message_map.fetch(message.first, msg)
  if message_builder.is_a?(Proc)
    message_builder.call(object, path, *msg[1..-1])
  else
    message_builder
  end
end
separator() click to toggle source
# File lib/composable_validations/errors.rb, line 45
def separator
  '/'
end