module Dopi::PluginManager
Public Class Methods
<<(plugin_klass)
click to toggle source
# 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)
click to toggle source
# 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.message}" end end
get_plugin_name(plugin_klass)
click to toggle source
# 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)
click to toggle source
# File lib/dopi/pluginmanager.rb, line 57 def self.plugin_klass(plugin_name) @plugins[plugin_name] end
plugin_klass_list(filter = nil)
click to toggle source
Expects a regular expression as a plugin filter
# File lib/dopi/pluginmanager.rb, line 53 def self.plugin_klass_list(filter = nil) plugin_list(filter).values end
plugin_list(filter = nil)
click to toggle source
Expects a regular expression as a plugin filter
# 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)
click to toggle source
Expects a regular expression as a plugin filter
# File lib/dopi/pluginmanager.rb, line 48 def self.plugin_name_list(filter = nil) plugin_list(filter).keys end