Module: Syosset::Plugins::Base::Registry

Defined in:
lib/syosset/plugins/base/registry.rb

Constant Summary collapse

@@plugins =
[]
@@callbacks =
{on_register: [], on_enable: [], on_disable: []}

Class Method Summary collapse

Class Method Details

.disable(plugin_class, plugable) ⇒ Object



27
28
29
30
31
32
# File 'lib/syosset/plugins/base/registry.rb', line 27

def self.disable plugin_class, plugable
  raise "Plugin must include Syosset::Plugins::Base::Plugin" unless plugin_class.include? Syosset::Plugins::Base::Plugin
  raise "Plugable must include Concerns::Plugable" unless plugable.class.include? Concerns::Plugable
  plugable.enabled_plugins.delete(plugin_class.to_s)
  @@callbacks[:on_disable].each {|x| x.call(plugin_class) } if plugable.save
end

.enable(plugin_class, plugable) ⇒ Object



20
21
22
23
24
25
# File 'lib/syosset/plugins/base/registry.rb', line 20

def self.enable plugin_class, plugable
  raise "Plugin must include Syosset::Plugins::Base::Plugin" unless plugin_class.include? Syosset::Plugins::Base::Plugin
  raise "Plugable must include Concerns::Plugable" unless plugable.class.include? Concerns::Plugable
  plugable.enabled_plugins << plugin_class.to_s
  @@callbacks[:on_enable].each {|x| x.call(plugin_class) } if plugable.save
end

.enabled?(plugin_class, plugable) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
17
18
# File 'lib/syosset/plugins/base/registry.rb', line 14

def self.enabled? plugin_class, plugable
  raise "Plugin must include Syosset::Plugins::Base::Plugin" unless plugin_class.include? Syosset::Plugins::Base::Plugin
  raise "Plugable must include Concerns::Plugable" unless plugable.class.include? Concerns::Plugable
  plugable.enabled_plugins.include? plugin_class.to_s
end

.on_disable(&callback) ⇒ Object



42
43
44
# File 'lib/syosset/plugins/base/registry.rb', line 42

def self.on_disable(&callback)
  @@callbacks[:on_disable] << callback
end

.on_enable(&callback) ⇒ Object



38
39
40
# File 'lib/syosset/plugins/base/registry.rb', line 38

def self.on_enable(&callback)
  @@callbacks[:on_enable] << callback
end

.on_register(&callback) ⇒ Object



34
35
36
# File 'lib/syosset/plugins/base/registry.rb', line 34

def self.on_register(&callback)
  @@callbacks[:on_register] << callback
end

.register(klass, options = {}) ⇒ Object



9
10
11
12
# File 'lib/syosset/plugins/base/registry.rb', line 9

def self.register(klass, options = {})
  @@plugins << [klass, options]
  @@callbacks[:on_register].each {|x| x.call }
end