Class: Pug::MessageHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/pug/message_handler.rb

Overview

Coordinates between messages provided from Bot to actions via the Controller

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(controller, parser, keyword_handler) ⇒ MessageHandler

Returns a new instance of MessageHandler.

Parameters:



19
20
21
22
23
# File 'lib/pug/message_handler.rb', line 19

def initialize(controller, parser, keyword_handler)
  @controller = controller
  @parser = parser
  @keyword_handler = keyword_handler
end

Class Method Details

.default(actions) ⇒ MessageHandler

A convenice initializer for provided actions

Parameters:

Returns:



10
11
12
13
14
# File 'lib/pug/message_handler.rb', line 10

def self.default(actions)
  controller = Action::Controller.new(actions)
  keyword_handler = KeywordHandler.new(actions)
  MessageHandler.new(controller, NumberParser.new, keyword_handler)
end

Instance Method Details

#handle(message) ⇒ Types::Result

Parses and coordinates the given message with the Controller

Parameters:

  • message (String)

    message to handle

Returns:



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/pug/message_handler.rb', line 28

def handle(message)
  return Results.missing_actions unless @controller.actions?
  return Results.unknown_input if message.to_s.empty?
  if @controller.running_action?
    run_action_with_inputs(message)
  elsif @keyword_handler.keyword?(message)
    handle_keyword(message)
  else
    parse_message_for_index(message)
  end
end