Class: ConditionalMessages::FindMessage

Inherits:
Object
  • Object
show all
Defined in:
lib/conditional_messages/find_message.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context_holder, category) ⇒ FindMessage

Returns a new instance of FindMessage.



10
11
12
13
# File 'lib/conditional_messages/find_message.rb', line 10

def initialize(context_holder, category)
  @context_holder = context_holder
  @category = category
end

Instance Attribute Details

#categoryObject (readonly)

Returns the value of attribute category.



8
9
10
# File 'lib/conditional_messages/find_message.rb', line 8

def category
  @category
end

#context_holderObject (readonly)

Returns the value of attribute context_holder.



8
9
10
# File 'lib/conditional_messages/find_message.rb', line 8

def context_holder
  @context_holder
end

Class Method Details

.for(*args) ⇒ Object



4
5
6
# File 'lib/conditional_messages/find_message.rb', line 4

def self.for(*args)
  new(*args).find_message
end

Instance Method Details

#find_messageObject



15
16
17
18
19
20
21
# 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