class PluginRegistry::Plugin

def self.name(name)

Returns:
  • (nil) - disregard

Parameters:
  • the (String) -- unique name of this plugin
def self.name(name)
  fail "Trying to register #{self} with name == nil" if name.nil?
  @name = name
  plugin_registry.registry[name] = self
end

def self.plugin_registry

Returns:
  • (PluginRegistry) - plugin registry for this plugin
def self.plugin_registry
  fail "Plugin #{self} does not implement `self.plugin_registry()`. This method is required"
end

def self.priority(x = nil)

Returns:
  • (Numeric) - This plugin's priority

Parameters:
  • Priority (Numeric) -- as a number. Will only be set if != nil
def self.priority(x = nil)
  @priority = x unless x.nil?
  @priority || 0
end

def self.resolve(_target)

Returns:
  • (Plugin) - instance if it can be resolved, nil otherwise

Parameters:
  • target (String) -- to try to resolve
def self.resolve(_target)
  fail "Plugin #{self} does not implement `self.resolve(target)`. This method is required"
end

def self.resolve_next(target, parent)

Returns:
  • (Plugin) - instance if it can be resolved, nil otherwise

Parameters:
  • an (Plugin) -- instance of the calling resolver
  • the (Any) -- current target that needs resolving
def self.resolve_next(target, parent)
  res = plugin_registry.resolve(target)
  res.parent = parent
  res
end