Class: Pluggaloid::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/pluggaloid/filter.rb

Class Method Summary collapse

Instance Method Summary collapse

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

#detachObject

このリスナを削除する

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