Class: Pluggaloid::HandlerTag
- Includes:
- Enumerable
- Defined in:
- lib/pluggaloid/handler_tag.rb
Overview
リスナをまとめて管理するプラグイン
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していて、リスナやフィルタを取得することができる。また、
-
Pluggaloid::HandlerTag#listeners で、 Pluggaloid::Listener だけ
-
Pluggaloid::HandlerTag#filters で、 Pluggaloid::Filter だけ
を対象にした Enumerator を取得することができる
このタグがついたリスナを全てdetachする
Pluggaloid::Plugin#detach の第一引数に Pluggaloid::HandlerTag のインスタンスを渡すことで、そのHandlerTagがついたListener、Filterは全てデタッチされる
Instance Attribute Summary
Attributes inherited from Identity
Instance Method Summary collapse
-
#each(&block) ⇒ Object
このTagがついている Pluggaloid::Listener と Pluggaloid::Filter を全て列挙する ==== Return Enumerable.
-
#filters(&block) ⇒ Object
このTagがついている Pluggaloid::Filter を全て列挙する ==== Return Enumerable.
-
#initialize(plugin:, **kwrest) ⇒ HandlerTag
constructor
Args [name:] タグの名前(String | nil).
-
#listeners(&block) ⇒ Object
このTagがついている Pluggaloid::Listener を全て列挙する ==== Return Enumerable.
Methods inherited from Identity
Constructor Details
#initialize(plugin:, **kwrest) ⇒ HandlerTag
Args
- name:
-
タグの名前(String | nil)
43 44 45 46 |
# File 'lib/pluggaloid/handler_tag.rb', line 43 def initialize(plugin:, **kwrest) super(**kwrest) @plugin = plugin end |
Instance Method Details
#each(&block) ⇒ Object
このTagがついている Pluggaloid::Listener と Pluggaloid::Filter を全て列挙する
Return
Enumerable
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/pluggaloid/handler_tag.rb', line 51 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 |
#filters(&block) ⇒ Object
このTagがついている Pluggaloid::Filter を全て列挙する
Return
Enumerable
79 80 81 82 83 84 85 |
# File 'lib/pluggaloid/handler_tag.rb', line 79 def filters(&block) if block filters.each(&block) else @plugin.to_enum(:filters).lazy.select{|l| l..include?(self) } end end |
#listeners(&block) ⇒ Object
このTagがついている Pluggaloid::Listener を全て列挙する
Return
Enumerable
68 69 70 71 72 73 74 |
# File 'lib/pluggaloid/handler_tag.rb', line 68 def listeners(&block) if block listeners.each(&block) else @plugin.to_enum(:listeners).lazy.select{|l| l..include?(self) } end end |