Sha256: 9b945f343a5430af2ff2db7a5da24fd305d35a20e13aea4b431e74e454b2afbd

Contents?: true

Size: 910 Bytes

Versions: 1

Compression:

Stored size: 910 Bytes

Contents

require 'pleiades/core/util'

module Line
  module Bot
    module Event
      class Base
        def initialize src
          @src = Pleiades::Util.define_reader src

          # /^[a-z]+_event\?$/
          #  => トークタイプの判定メソッドに反応する。
          #
          # @src.source.type => 'user'
          #   user_event? => true
          #   room_event? => false
          #   hoge_event? => false
          #
          @src.define_singleton_method(:method_missing) do |method, *_|
            return super() unless /^[a-z]+_event\?$/ =~ method
            source.type == method.to_s.split('_').first
          end
        end

        def method_missing method, *_
          begin
            @src.__send__ method
          rescue ArgumentError => _
            raise NoMethodError, "#{self.class} has no `#{method}` method."
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pleiades-0.1.1 lib/pleiades/core_ext/line/bot/event/base.rb