Sha256: e626f0f8f8a1572d59f15ddfcc2c91d7d4e3c93671665b38d54400a1d5137eb9
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
module Boty module MatchHandler include Boty::Logger attr_reader :trigger_message def listeners @listeners ||= [] end def commands @commands ||= [] end def desc(command, description = nil) @current_desc = ActionDescription.new command, description: description end def match(*regexes, &block) create_action_on_collection listeners, regexes, &block end def respond(*regexes, &block) create_action_on_collection commands, regexes, &block end def no_match(regex, &block) remove_action listeners, regex, block end def no_respond(regex, &block) remove_action commands, regex, block end def no(command) remove_action listeners, command: command remove_action commands, command: command end def execute_matches(message) execute_actions message, listeners end def execute_commands(message) execute_actions message, commands end private def create_action_on_collection(collection, regexes, &block) regexes.each do |regex| collection << create_action(regex, &block) end end def execute_actions(message, actions) @trigger_message = message Array(actions).each do |action| action.execute @trigger_message end ensure @trigger_message = nil end def remove_action(collection, regex = nil, block = nil, command: nil) collection.delete_if do |action| action.desc.command == command || action.this?(regex, block) end end def create_action(regex, &block) regex = Regexp.new(regex) if regex.is_a? String Boty::Action.new(self, regex, @current_desc, &block).tap { @current_desc = nil } end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
boty-1.0.1 | lib/boty/match_handler.rb |
boty-1.0.0 | lib/boty/match_handler.rb |
boty-0.2.0 | lib/boty/match_handler.rb |