class Fend::Plugins::FullMessages::Generator

Public Class Methods

new(opts = {}) click to toggle source
# File lib/fend/plugins/full_messages.rb, line 64
def initialize(opts = {})
  @array_params = opts.fetch(:array_member_names, {})
  @skip_list = opts[:skip]
end

Public Instance Methods

call(errors) click to toggle source
# File lib/fend/plugins/full_messages.rb, line 69
def call(errors)
  errors.each_with_object({}) do |(param_name, messages), result|
    result[param_name] = if @skip_list.include?(param_name)
                           messages
                         else
                           messages_for(param_name, messages)
                         end
  end
end

Private Instance Methods

build_full_message(param_name, message) click to toggle source
# File lib/fend/plugins/full_messages.rb, line 107
def build_full_message(param_name, message)
  "#{param_name} #{message}"
end
full_messages_for(param_name, messages) click to toggle source
# File lib/fend/plugins/full_messages.rb, line 103
def full_messages_for(param_name, messages)
  messages.map { |message| build_full_message(param_name, message) }
end
messages_for(param, messages) click to toggle source
# File lib/fend/plugins/full_messages.rb, line 81
def messages_for(param, messages)
  if messages.is_a?(Hash)
    process_hash_messages(param, messages)
  else
    full_messages_for(param, messages)
  end
end
process_hash_messages(param, messages) click to toggle source
# File lib/fend/plugins/full_messages.rb, line 89
def process_hash_messages(param, messages)
  param_is_array = messages.first[0].is_a?(Integer)

  messages.each_with_object({}) do |(_param, msgs), result|
    param_name = if param_is_array
                   @array_params.fetch(param, _param)
                 else
                   _param
                 end

    result[_param] = messages_for(param_name, msgs)
  end
end