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.
1596 1597 1598 1599 1600 1601 |
# File 'lib/kettle/jem.rb', line 1596 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.
1594 1595 1596 |
# File 'lib/kettle/jem.rb', line 1594 def configured_plugins @configured_plugins end |
#hooks ⇒ Object (readonly)
Returns the value of attribute hooks.
1594 1595 1596 |
# File 'lib/kettle/jem.rb', line 1594 def hooks @hooks end |
#load_errors ⇒ Object (readonly)
Returns the value of attribute load_errors.
1594 1595 1596 |
# File 'lib/kettle/jem.rb', line 1594 def load_errors @load_errors end |
#loaded_plugins ⇒ Object (readonly)
Returns the value of attribute loaded_plugins.
1594 1595 1596 |
# File 'lib/kettle/jem.rb', line 1594 def loaded_plugins @loaded_plugins end |
Instance Method Details
#empty? ⇒ Boolean
1628 1629 1630 |
# File 'lib/kettle/jem.rb', line 1628 def empty? @hooks.empty? end |
#register(plugin_name:, phase:, timing:, &callback) ⇒ Object
1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 |
# File 'lib/kettle/jem.rb', line 1603 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
1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 |
# File 'lib/kettle/jem.rb', line 1614 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 |