Sha256: 6cd44eded1a1fbebc404bfbcc9958ad90b196e07286e76c8a870948e4927f9b1

Contents?: true

Size: 1.32 KB

Versions: 5

Compression:

Stored size: 1.32 KB

Contents

module Lita
  # A wrapper object that provides the primary interface for handlers to
  # respond to incoming chat messages.
  class Response
    extend Forwardable

    # The incoming message.
    # @return [Lita::Message] The message.
    attr_accessor :message

    # The pattern the incoming message matched.
    # @return [Regexp] The pattern.
    attr_accessor :pattern

    # @!method args
    #   @see Lita::Message#args
    # @!method reply
    #   @see Lita::Message#reply
    # @!method reply_privately
    #   @see Lita::Message#reply_privately
    # @!method user
    #   @see Lita::Message#user
    def_delegators :message, :args, :reply, :reply_privately, :user, :command?

    # @param message [Lita::Message] The incoming message.
    # @param pattern [Regexp] The pattern the incoming message matched.
    def initialize(message, pattern)
      self.message = message
      self.pattern = pattern
    end

    # An array of matches from scanning the message against the route pattern.
    # @return [Array<String>, Array<Array<String>>] The array of matches.
    def matches
      @matches ||= message.match(pattern)
    end

    # A +MatchData+ object from running the pattern against the message body.
    # @return [MatchData] The +MatchData+.
    def match_data
      @match_data ||= pattern.match(message.body)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lita-3.0.4 lib/lita/response.rb
lita-3.0.3 lib/lita/response.rb
lita-3.0.2 lib/lita/response.rb
lita-3.0.1 lib/lita/response.rb
lita-3.0.0 lib/lita/response.rb