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