Class: WithConditions::OptionMerger

Inherits:
BasicObject
Defined in:
lib/with_conditions/options_merger.rb

Instance Method Summary collapse

Constructor Details

#initialize(context, if:, unless:) ⇒ OptionMerger

Returns a new instance of OptionMerger.



5
6
7
8
9
# File 'lib/with_conditions/options_merger.rb', line 5

def initialize(context, if:, unless:)
  @context = context
  @if_conds = Array(::Kernel.binding.local_variable_get(:if))
  @unless_conds = Array(::Kernel.binding.local_variable_get(:unless))
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, **kwargs) ⇒ Object (private)



13
14
15
16
17
# File 'lib/with_conditions/options_merger.rb', line 13

def method_missing(method, *, **kwargs, &)
  kwargs[:if] = @if_conds + Array(kwargs[:if])
  kwargs[:unless] = @unless_conds + Array(kwargs[:unless])
  @context.__send__(method, *, **kwargs, &)
end