Class: Pluggaloid::Filter
- Inherits:
-
Object
- Object
- Pluggaloid::Filter
- Defined in:
- lib/pluggaloid/filter.rb
Class Method Summary collapse
-
.cancel!(result = false) ⇒ Object
フィルタ内部で使う。フィルタの実行をキャンセルする。Plugin#filtering はfalseを返し、 イベントのフィルタの場合は、そのイベントの実行自体をキャンセルする。 また、 result が渡された場合、Event#filtering の戻り値は result になる。.
Instance Method Summary collapse
-
#detach ⇒ Object
このリスナを削除する ==== Return self.
-
#filtering(*args) ⇒ Object
イベントを実行する ==== Args [*args] イベントの引数 ==== Return 加工後の引数の配列.
-
#initialize(event, &callback) ⇒ Filter
constructor
Args [event] 監視するEventのインスタンス [&callback] コールバック.
Constructor Details
#initialize(event, &callback) ⇒ Filter
Args
- event
-
監視するEventのインスタンス
- &callback
-
コールバック
13 14 15 16 17 |
# File 'lib/pluggaloid/filter.rb', line 13 def initialize(event, &callback) raise Pluggaloid::TypeError, "Argument `event' must be instance of Pluggaloid::Event, but given #{event.class}." unless event.is_a? Pluggaloid::Event @event = event @callback = Proc.new event.add_filter self end |
Class Method Details
.cancel!(result = false) ⇒ Object
フィルタ内部で使う。フィルタの実行をキャンセルする。Plugin#filtering はfalseを返し、イベントのフィルタの場合は、そのイベントの実行自体をキャンセルする。また、 result が渡された場合、Event#filtering の戻り値は result になる。
7 8 |
# File 'lib/pluggaloid/filter.rb', line 7 def self.cancel!(result=false) throw :filter_exit, result end |
Instance Method Details
#detach ⇒ Object
このリスナを削除する
Return
self
34 35 36 |
# File 'lib/pluggaloid/filter.rb', line 34 def detach @event.delete_filter(self) self end |
#filtering(*args) ⇒ Object
イベントを実行する
Args
- *args
-
イベントの引数
Return
加工後の引数の配列
24 25 26 27 28 29 |
# File 'lib/pluggaloid/filter.rb', line 24 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 |