Class: Kettle::Jem::PluginRegistry
- Inherits:
-
Object
- Object
- Kettle::Jem::PluginRegistry
- Defined in:
- lib/kettle/jem.rb
Defined Under Namespace
Classes: Hook
Constant Summary collapse
- VALID_TIMINGS =
%i[before after].freeze
Instance Attribute Summary collapse
-
#configured_plugins ⇒ Object
readonly
Returns the value of attribute configured_plugins.
-
#hooks ⇒ Object
readonly
Returns the value of attribute hooks.
-
#load_errors ⇒ Object
readonly
Returns the value of attribute load_errors.
-
#loaded_plugins ⇒ Object
readonly
Returns the value of attribute loaded_plugins.
Instance Method Summary collapse
- #empty? ⇒ Boolean
-
#initialize(configured_plugins: [], loaded_plugins: []) ⇒ PluginRegistry
constructor
A new instance of PluginRegistry.
- #register(plugin_name:, phase:, timing:, &callback) ⇒ Object
- #run(timing:, phase:, context:, actor:, phase_stats:) ⇒ Object
Constructor Details
#initialize(configured_plugins: [], loaded_plugins: []) ⇒ PluginRegistry
Returns a new instance of PluginRegistry.
1616 1617 1618 1619 1620 1621 |
# File 'lib/kettle/jem.rb', line 1616 def initialize(configured_plugins: [], loaded_plugins: []) @hooks = [] @configured_plugins = configured_plugins @loaded_plugins = loaded_plugins @load_errors = [] end |
Instance Attribute Details
#configured_plugins ⇒ Object (readonly)
Returns the value of attribute configured_plugins.
1614 1615 1616 |
# File 'lib/kettle/jem.rb', line 1614 def configured_plugins @configured_plugins end |
#hooks ⇒ Object (readonly)
Returns the value of attribute hooks.
1614 1615 1616 |
# File 'lib/kettle/jem.rb', line 1614 def hooks @hooks end |
#load_errors ⇒ Object (readonly)
Returns the value of attribute load_errors.
1614 1615 1616 |
# File 'lib/kettle/jem.rb', line 1614 def load_errors @load_errors end |
#loaded_plugins ⇒ Object (readonly)
Returns the value of attribute loaded_plugins.
1614 1615 1616 |
# File 'lib/kettle/jem.rb', line 1614 def loaded_plugins @loaded_plugins end |
Instance Method Details
#empty? ⇒ Boolean
1648 1649 1650 |
# File 'lib/kettle/jem.rb', line 1648 def empty? @hooks.empty? end |
#register(plugin_name:, phase:, timing:, &callback) ⇒ Object
1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 |
# File 'lib/kettle/jem.rb', line 1623 def register(plugin_name:, phase:, timing:, &callback) raise ArgumentError, "Plugin callbacks require a block" unless callback @hooks << Hook.new( plugin_name: plugin_name.to_s, phase: normalize_phase(phase), timing: normalize_timing(timing), callback: callback ) end |
#run(timing:, phase:, context:, actor:, phase_stats:) ⇒ Object
1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 |
# File 'lib/kettle/jem.rb', line 1634 def run(timing:, phase:, context:, actor:, phase_stats:) normalized_phase = normalize_phase(phase) normalized_timing = normalize_timing(timing) hooks_for(normalized_timing, normalized_phase).each do |hook| hook.callback.call( context: context, actor: actor, phase: normalized_phase, phase_stats: phase_stats, plugin_name: hook.plugin_name ) end end |