Sha256: 13673f17a0f0be6313825ab192becc4f0a877c8a8d7d192317bb801e35232b15

Contents?: true

Size: 702 Bytes

Versions: 1

Compression:

Stored size: 702 Bytes

Contents

module Ni::Flows
  class IsolatedInlineInteractor < Base
    attr_accessor :interactor_klass, :action, :receive_list, :provide_list

    def initialize(interactor_klass, action, options={})
      self.interactor_klass, self.action = interactor_klass, action
      self.receive_list, self.provide_list = Array(options[:receive]), Array(options[:provide])
    end

    def call(context)
      isolated_context = Ni::Context.new(nil, action)
      isolated_context.assign_data!(context.slice(*receive_list))

      result = interactor_klass.public_send(action, isolated_context)

      provide_list.each do |param_name|
        context[param_name] = result.context[param_name]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ni-0.1.1 lib/ni/flows/isolated_inline_interactor.rb