class PluginRegistry::Plugin

Attributes

parent[RW]
target[R]

Public Class Methods

name(name) click to toggle source

Register a new plugin by name

@param [String] the unique name of this plugin @return [nil] disregard

# File lib/inspec/plugin/v1/registry.rb, line 49
def self.name(name)
  raise "Trying to register #{self} with name == nil" if name.nil?

  @name = name
  plugin_registry.registry[name] = self
end
plugin_registry() click to toggle source

Retrieve the plugin registry associated with this plugin

@return [PluginRegistry] plugin registry for this plugin

# File lib/inspec/plugin/v1/registry.rb, line 41
def self.plugin_registry
  raise "Plugin #{self} does not implement `self.plugin_registry()`. This method is required"
end
priority(x = nil) click to toggle source

This plugin's priority. Set it by providing the priority as an argument. Higher numbers ensure that the plugin is called early to check if a target belongs to it. When called without an argument, it retrieves this plugin's priority. Defaults to 0.

@param [Numeric] Priority as a number. Will only be set if != nil @return [Numeric] This plugin's priority

# File lib/inspec/plugin/v1/registry.rb, line 63
def self.priority(x = nil)
  @priority = x unless x.nil?
  @priority || 0
end
resolve(_target) click to toggle source

Try to resolve the target. If this plugin cannot handle it, the result will be nil. If, however, the plugin can resolve it, the resulting object will be an instance of this plugin. This means, that the interface that this base class provides, is the basis for the returned type.

@param [String] target to try to resolve @return [Plugin] instance if it can be resolved, nil otherwise

# File lib/inspec/plugin/v1/registry.rb, line 75
def self.resolve(_target)
  raise "Plugin #{self} does not implement `self.resolve(target)`. This method is required"
end
resolve_next(target, parent) click to toggle source

When a plugin's resolve doesn't lead to the final state, it can use this method to hand it back for another resolver to handle.

@param [Any] the current target that needs resolving @param [Plugin] an instance of the calling resolver @return [Plugin] instance if it can be resolved, nil otherwise

# File lib/inspec/plugin/v1/registry.rb, line 85
def self.resolve_next(target, parent)
  res = plugin_registry.resolve(target)
  res.parent = parent
  res
end