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