class ConditionalMessages::FindMessage

Attributes

category[R]
context_holder[R]

Public Class Methods

for(*args) click to toggle source
# File lib/conditional_messages/find_message.rb, line 4
def self.for(*args)
  new(*args).find_message
end
new(context_holder, category) click to toggle source
# File lib/conditional_messages/find_message.rb, line 10
def initialize(context_holder, category)
  @context_holder = context_holder
  @category = category
end

Public Instance Methods

find_message() click to toggle source
# File lib/conditional_messages/find_message.rb, line 15
def find_message
  applied_messages = category.apply(context_holder)
  messages_where_all_required_rules_pass = applied_messages.select(&:all_required_rules_pass?)
  by_score = messages_where_all_required_rules_pass.group_by(&:score)
  winners = by_score.sort_by { |score, messages| score }.last.last
  winners.sample
end