Module: Dopi::PluginManager
- Defined in:
- lib/dopi/pluginmanager.rb
Class Method Summary collapse
- .<<(plugin_klass) ⇒ Object
- .create_instance(plugin_name, *args) ⇒ Object
- .get_plugin_name(plugin_klass) ⇒ Object
- .plugin_klass(plugin_name) ⇒ Object
-
.plugin_klass_list(filter = nil) ⇒ Object
Expects a regular expression as a plugin filter.
-
.plugin_list(filter = nil) ⇒ Object
Expects a regular expression as a plugin filter.
-
.plugin_name_list(filter = nil) ⇒ Object
Expects a regular expression as a plugin filter.
Class Method Details
.<<(plugin_klass) ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/dopi/pluginmanager.rb', line 11 def self.<<(plugin_klass) plugin_name = get_plugin_name(plugin_klass) raise Dopi::PluginLoaderError, "Plugin class #{plugin_klass.to_s} (#{plugin_name}) already loaded" if @plugins[plugin_name] @plugins[plugin_name] = plugin_klass end |
.create_instance(plugin_name, *args) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/dopi/pluginmanager.rb', line 20 def self.create_instance(plugin_name, *args) begin @plugins[plugin_name].new(*args) rescue Exception => e raise PluginLoaderError, "Could not create instance of plugin #{plugin_name}: #{e.}" end end |
.get_plugin_name(plugin_klass) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/dopi/pluginmanager.rb', line 28 def self.get_plugin_name(plugin_klass) plugin_klass.to_s. gsub(/::/, '/'). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). downcase end |
.plugin_klass(plugin_name) ⇒ Object
57 58 59 |
# File 'lib/dopi/pluginmanager.rb', line 57 def self.plugin_klass(plugin_name) @plugins[plugin_name] end |
.plugin_klass_list(filter = nil) ⇒ Object
Expects a regular expression as a plugin filter
53 54 55 |
# File 'lib/dopi/pluginmanager.rb', line 53 def self.plugin_klass_list(filter = nil) plugin_list(filter).values end |
.plugin_list(filter = nil) ⇒ Object
Expects a regular expression as a plugin filter
38 39 40 41 42 43 44 45 |
# File 'lib/dopi/pluginmanager.rb', line 38 def self.plugin_list(filter = nil) if filter regexp = Regexp.new(filter) @plugins.select{|p| p =~ regexp} else @plugins end end |
.plugin_name_list(filter = nil) ⇒ Object
Expects a regular expression as a plugin filter
48 49 50 |
# File 'lib/dopi/pluginmanager.rb', line 48 def self.plugin_name_list(filter = nil) plugin_list(filter).keys end |