Sha256: b76483e7d13ec413f356e7dba3ba1837f933697d1cab7104fe8ec9dd8e5467a1
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
module Ruboty class Action def self.prefix_pattern(robot_name) /\A@?#{Regexp.escape(robot_name)}:?\s*/ end attr_reader :options, :pattern def initialize(pattern, options = {}) @pattern = pattern @options = options end def call(handler, message, options = {}) if !!options[:missing] == missing? && message.match(pattern_with(handler.robot.name)) !!handler.send(name, message) else false end end def all? !!options[:all] end def description options[:description] || "(no description)" end def hidden? !!options[:hidden] end # @note :missing action is called only when any handler doesn't match given message. def missing? !!options[:missing] end def name options[:name] end def <=>(action) pattern.to_s <=> action.pattern.to_s end private def pattern_with(robot_name) if all? /\A#{pattern}/ else /#{self.class.prefix_pattern(robot_name)}#{pattern}/ end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruboty-1.1.1 | lib/ruboty/action.rb |