Sha256: 6f3db2b1887c304b701af0358cd2d602f34775e9344a597f6acb7c2a4d04bd9b

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

module IRC
  class Callback
    def initialize(block)
      @block = block
    end

    def call(event)
      CallbackDSL.run(event, @block)
    end

    class CallbackDSL
      def self.run(event, block)
        callbackdsl = self.new(event)
        block.arity < 1 ? callbackdsl.instance_eval(&block) : block.call(callbackdsl)
      end

      def initialize(event)
        @event = event
      end

      # @event accessors
      def prefix
        @event.prefix
      end

      def command
        @event.command
      end

      def server
        @event.server
      end

      def params
        @event.params
      end

      # commands
      def send(*args)
        if args[0].is_a?(Symbol) && args[1].is_a?(String)
          IRC.send(@event.server, *args) # now we don't have to do send(e.server, ...) all the time
        else
          IRC.send(*args)
        end
      end

      alias raw send

      def privmsg(target, message)
        send(:privmsg, target, message)
      end

      alias msg privmsg

      def join(channel)
        send(:join, channel)
      end

      def pong(msg)
        send(:pong, msg)
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
on_irc-2.0.0 lib/on_irc/callback.rb