Class: HiddenHooks::LookUpProxy
- Inherits:
-
Object
- Object
- HiddenHooks::LookUpProxy
- Defined in:
- lib/hidden_hooks.rb
Instance Method Summary collapse
-
#initialize(klass = nil, sole: false, present: sole) ⇒ LookUpProxy
constructor
A new instance of LookUpProxy.
Constructor Details
#initialize(klass = nil, sole: false, present: sole) ⇒ LookUpProxy
Returns a new instance of LookUpProxy.
35 36 37 38 39 40 |
# File 'lib/hidden_hooks.rb', line 35 def initialize klass=nil, sole: false, present: sole @klass = klass @hooks = ::HiddenHooks.hooks[klass] @sole = sole @present = present end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(hook_name, *args, **kwargs, &block) ⇒ Object (private)
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/hidden_hooks.rb', line 44 def method_missing(hook_name, *args, **kwargs, &block) hooks = @hooks[hook_name] if @present && hooks.empty? raise HiddenHooks::AtLeastOneHookRequired, "There must be at least one hook `#{hook_name}` defined for class `#{@klass}`" end if @sole && hooks.size > 1 raise HiddenHooks::SoleHookExceeded, "There must be at most one hook `#{hook_name}` defined for class `#{@klass}`" end hooks .map { |hook| hook.call(*args, **kwargs, &block) } .then { |results| (@sole && @present) ? results.first : results } end |