Module: Encapsulate

Defined in:
lib/encapsulate.rb,
lib/encapsulate/version.rb

Constant Summary collapse

VERSION =
"0.1.0"
@@encapsulator_params =
[[:keyreq, :callback], [:key, :params]]

Class Method Summary collapse

Class Method Details

.create(callback:, with:) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/encapsulate.rb', line 11

def self.create(callback:, with:)
  lambdas = []
  lambdas[0] = callback

  with.each_with_index do |encapsulator, index|
    ReflectionUtils.assert_parameters(encapsulator, @@encapsulator_params)
    lambdas[index + 1] = lambda { |params = nil| encapsulator.call(callback: lambdas[index], params: params) }
  end

  lambdas.last
end

.run(callback:, with:, params: nil) ⇒ Object



7
8
9
# File 'lib/encapsulate.rb', line 7

def self.run(callback:, with:, params:nil)
  ReflectionUtils.call(create(callback: callback, with: with), params)
end