class Pluggaloid::Filter

Constants

CANCEL_PROC
NotConverted
THROUGH

Public Class Methods

cancel!(result=false) click to toggle source

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

# File lib/pluggaloid/filter.rb, line 9
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 20
def initialize(event, **kwrest, &callback)
  kwrest[:name] ||= '%s line %i' % callback.source_location
  super(event, **kwrest)
  @callback = callback
  event.add_filter self end

Public Instance Methods

detach() click to toggle source

このリスナを削除する

Return

self

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

イベントを実行する

Args

*args

イベントの引数

Return

加工後の引数の配列

# File lib/pluggaloid/filter.rb, line 31
def filtering(*args)
  length = args.size
  result = @callback.call(*args, &CANCEL_PROC)
  case
  when THROUGH == result
    args
  when length != result.size
    raise Pluggaloid::FilterError, "filter changes arguments length (#{length} to #{result.size})"
  else
    result
  end
end