class Pluggaloid::Filter

Public Class Methods

cancel!(result=false) click to toggle source

フィルタ内部で使う。フィルタの実行をキャンセルする。Plugin#filtering はfalseを返し、 イベントのフィルタの場合は、そのイベントの実行自体をキャンセルする。 また、 result が渡された場合、Event#filtering の戻り値は result になる。

# File lib/pluggaloid/filter.rb, line 6
def self.cancel!(result=false)
  throw :filter_exit, result end
new(event, **kwrest, &callback) click to toggle source

Args

event

監視するEventのインスタンス

name:

名前(String | nil)

slug:

フィルタスラッグ(Symbol | nil)

tags:

Pluggaloid::HandlerTag|Array フィルタのタグ

&callback

コールバック

Calls superclass method Pluggaloid::Handler.new
# File lib/pluggaloid/filter.rb, line 15
def initialize(event, **kwrest, &callback)
  super
  @callback = Proc.new
  event.add_filter self end

Public Instance Methods

detach() click to toggle source

このリスナを削除する

Return

self

# File lib/pluggaloid/filter.rb, line 35
def detach
  @event.delete_filter(self)
  self end
filtering(*args) click to toggle source

イベントを実行する

Args

*args

イベントの引数

Return

加工後の引数の配列

# File lib/pluggaloid/filter.rb, line 25
def filtering(*args)
  length = args.size
  result = @callback.call(*args, &self.class.method(:cancel!))
  if length != result.size
    raise Pluggaloid::FilterError, "filter changes arguments length (#{length} to #{result.size})" end
  result end