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