class Pluggaloid::HandlerTag
リスナをまとめて管理するプラグイン¶ ↑
Pluggaloid::Listener
や、 Pluggaloid::Filter
をまとめて扱うための仕組み。 Pluggaloid::Plugin#add_event
などの引数 tags: に、このインスタンスを設定する。
インスタンスの作成¶ ↑
Pluggaloid::Plugin#handler_tag
を使って生成する。 Pluggaloid::HandlerTag
の plugin: 引数には、レシーバ(Pluggaloid::Plugin
)が渡される。 Pluggaloid::HandlerTag
は、このプラグインの中でだけ使える。複数のプラグインのリスナ をまとめて管理することはできない。
リスナにタグをつける¶ ↑
Pluggaloid::Plugin#add_event
または Pluggaloid::Plugin#add_event_filter
の tags: 引数にこれのインスタンスを渡す。
このタグがついたListenerやFilterを取得する¶ ↑
Enumerable をincludeしていて、リスナやフィルタを取得することができる。 また、
を対象にした Enumerator を取得することができる
このタグがついたリスナを全てdetachする¶ ↑
Pluggaloid::Plugin#detach
の第一引数に Pluggaloid::HandlerTag
の インスタンスを渡すことで、そのHandlerTagがついたListener、Filterは全てデタッチ される
Public Class Methods
Args¶ ↑
- name:
-
タグの名前(String | nil)
Pluggaloid::Identity::new
# File lib/pluggaloid/handler_tag.rb, line 42 def initialize(plugin:, **kwrest) super(**kwrest) @plugin = plugin end
Public Instance Methods
このTagがついている Pluggaloid::Listener
と Pluggaloid::Filter
を全て列挙する
Return¶ ↑
Enumerable
# File lib/pluggaloid/handler_tag.rb, line 50 def each(&block) if block Enumerator.new do |y| listeners{|x| y << x } filters{|x| y << x } end.each(&block) else Enumerator.new do |y| listeners{|x| y << x } filters{|x| y << x } end end end
このTagがついている Pluggaloid::Filter
を全て列挙する
Return¶ ↑
Enumerable
# File lib/pluggaloid/handler_tag.rb, line 78 def filters(&block) if block filters.each(&block) else @plugin.to_enum(:filters).lazy.select{|l| l.tags.include?(self) } end end
このTagがついている Pluggaloid::Listener
を全て列挙する
Return¶ ↑
Enumerable
# File lib/pluggaloid/handler_tag.rb, line 67 def listeners(&block) if block listeners.each(&block) else @plugin.to_enum(:listeners).lazy.select{|l| l.tags.include?(self) } end end