class Pluggaloid::Plugin
Attributes
vm[W]
defined_time[R]
最初にプラグインがロードされた時刻(uninstallされるとリセットする)
name[R]
プラグインの名前
spec[RW]
spec
Public Class Methods
call(event_name, *args)
click to toggle source
clear!()
click to toggle source
# File lib/pluggaloid/plugin.rb, line 75 def clear! if defined?(@vm) and @vm @vm.Event.clear! @vm = nil end __clear_aF4e__() end
Also aliased as: __clear_aF4e__
create(plugin_name, &body)
click to toggle source
defevent(event_name, options = {})
click to toggle source
filter_cancel!()
click to toggle source
互換性のため
# File lib/pluggaloid/plugin.rb, line 69 def filter_cancel! vm.Filter.cancel! end
filtering(event_name, *args)
click to toggle source
new(*args)
click to toggle source
uninstall(plugin_name)
click to toggle source
互換性のため
# File lib/pluggaloid/plugin.rb, line 65 def uninstall(plugin_name) self[plugin_name].uninstall end
vm()
click to toggle source
# File lib/pluggaloid/plugin.rb, line 16 def vm @vm ||= begin raise Pluggaloid::NoDefaultDelayerError, "Default Delayer was not set." unless Delayer.default vm = Pluggaloid::VM.new( Delayer.default, self, Pluggaloid::Event, Pluggaloid::Listener, Pluggaloid::Filter, Pluggaloid::HandlerTag) vm.Event.vm = vm end end
Public Instance Methods
add_event(event_name, **kwrest, &callback)
click to toggle source
イベントリスナを新しく登録する
Args¶ ↑
- event
-
監視するEventのインスタンス
- name:
-
名前(String | nil)
- slug:
-
イベントリスナスラッグ(Symbol | nil)
- tags:
-
Pluggaloid::HandlerTag|Array リスナのタグ
- &callback
-
コールバック
Return¶ ↑
# File lib/pluggaloid/plugin.rb, line 109 def add_event(event_name, **kwrest, &callback) result = vm.Listener.new(vm.Event[event_name], **kwrest, &callback) @events << result result end
add_event_filter(event_name, **kwrest, &callback)
click to toggle source
イベントフィルタを新しく登録する
Args¶ ↑
- event
-
監視するEventのインスタンス
- name:
-
名前(String | nil)
- slug:
-
フィルタスラッグ(Symbol | nil)
- tags:
-
Pluggaloid::HandlerTag|Array フィルタのタグ
- &callback
-
コールバック
Return¶ ↑
# File lib/pluggaloid/plugin.rb, line 123 def add_event_filter(event_name, **kwrest, &callback) result = vm.Filter.new(vm.Event[event_name], **kwrest, &callback) @filters << result result end
defdsl(dsl_name, &callback)
click to toggle source
defevent(event_name, options={})
click to toggle source
detach(*args)
click to toggle source
イベントを削除する。 引数は、Pluggaloid::ListenerかPluggaloid::Filterのみ(on_*やfilter_*の戻り値)。 互換性のため、二つ引数がある場合は第一引数は無視され、第二引数が使われる。
Args¶ ↑
- *args
-
引数
Return¶ ↑
self
# File lib/pluggaloid/plugin.rb, line 186 def detach(*args) listener = args.last case listener when vm.Listener @events.delete(listener) listener.detach when vm.Filter @filters.delete(listener) listener.detach when Enumerable listener.each(&method(:detach)) else raise ArgumentError, "Argument must be Pluggaloid::Listener, Pluggaloid::Filter, Pluggaloid::HandlerTag or Enumerable. But given #{listener.class}." end self end
filters()
click to toggle source
フィルタを列挙する
Return¶ ↑
Set of Pluggaloid::Filter
# File lib/pluggaloid/plugin.rb, line 170 def filters if block_given? @filters.each(&Proc.new) else @filters.dup end end
handler_tag(slug=SecureRandom.uuid, name=slug) { |tag| ... }
click to toggle source
このプラグインのHandlerTagを作る。 ブロックが渡された場合は、ブロックの中を実行し、ブロックの中で定義された Handler全てにTagを付与する。
Args¶ ↑
- slug
-
スラッグ
- name
-
タグ名
Return¶ ↑
# File lib/pluggaloid/plugin.rb, line 136 def handler_tag(slug=SecureRandom.uuid, name=slug) tag = case slug when String, Symbol vm.HandlerTag.new(slug: slug.to_sym, name: name.to_s, plugin: self) when vm.HandlerTag slug else raise Pluggaloid::TypeError, "Argument `slug' must be instance of Symbol, String or Pluggaloid::HandlerTag, but given #{slug.class}." end if block_given? handlers = @events + @filters yield tag (@events + @filters - handlers).each do |handler| handler.add_tag(tag) end else tag end end
listeners()
click to toggle source
イベントリスナを列挙する
Return¶ ↑
Set of Pluggaloid::Listener
# File lib/pluggaloid/plugin.rb, line 159 def listeners if block_given? @events.each(&Proc.new) else @events.dup end end
method_missing(method, *args, **kwrest, &proc)
click to toggle source
マジックメソッドを追加する。
- on_?name
-
#add_event(name)
- filter_?name
-
#add_event_filter(name)
Calls superclass method
# File lib/pluggaloid/plugin.rb, line 247 def method_missing(method, *args, **kwrest, &proc) case method.to_s when /\Aon_?(.+)\Z/ add_event($1.to_sym, *args, **kwrest, &proc) when /\Afilter_?(.+)\Z/ add_event_filter($1.to_sym, **kwrest, &proc) when /\Ahook_?(.+)\Z/ add_event_hook($1.to_sym, &proc) else super end end
onunload()
click to toggle source
プラグインが ::uninstall される時に呼ばれるブロックを登録する。
# File lib/pluggaloid/plugin.rb, line 234 def onunload callback = Proc.new add_event(:unload) do |plugin_slug| if plugin_slug == self.name callback.call end end end
Also aliased as: on_unload
Private Instance Methods
vm()
click to toggle source
# File lib/pluggaloid/plugin.rb, line 260 def vm self.class.vm end