Class: Pipeable::Steps::To

Inherits:
Abstract show all
Defined in:
lib/pipeable/steps/to.rb

Overview

Delegates to a non-callable object which automatically wraps the result if necessary.

Instance Method Summary collapse

Methods included from Composable

#<<, #>>

Constructor Details

#initialize(object, message) ⇒ To

Returns a new instance of To.



9
10
11
12
13
# File 'lib/pipeable/steps/to.rb', line 9

def initialize(object, message, **)
  super(**)
  @object = object
  @message = message
end

Instance Method Details

#call(result) ⇒ Object



15
16
17
18
19
20
# File 'lib/pipeable/steps/to.rb', line 15

def call result
  result.bind do |arguments|
    splat = Marameters.categorize object.method(message).parameters, arguments
    wrap object.public_send(message, *splat.positionals, **splat.keywords, &splat.block)
  end
end