Sha256: b446033ae17394e273dbd7d6dddb38bc02815ab89b103d194704208d207a7970

Contents?: true

Size: 1.11 KB

Versions: 8

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

module ConvenientService
  module Service
    module Plugins
      module HasResultMethodSteps
        class Middleware < Core::MethodChainMiddleware
          ##
          # @internal
          #   NOTE: It is okish to assign to next method arguments here,
          #   since splat for `args` and double splat for `kwargs`
          #   always create new arrays and hashes respectively.
          #   https://github.com/ruby/spec/blob/c7ed8478a031d0df346d222495f4b4bbb298523b/language/keyword_arguments_spec.rb#L100
          #
          def next(*args, **kwargs, &block)
            return chain.next(*args, **kwargs, &block) unless args.first.instance_of?(::Symbol)

            kwargs[:in] = Utils::Array.wrap(kwargs[:in]) + [{method_name: raw(args.first)}, {organizer: :itself}]

            args[0] = (args.first == :result) ? Services::RunOwnMethodInOrganizer : Services::RunMethodInOrganizer

            chain.next(*args, **kwargs, &block)
          end

          private

          def raw(object)
            Support::RawValue.wrap(object)
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
convenient_service-0.10.1 lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb
convenient_service-0.10.0 lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb
convenient_service-0.9.0 lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb
convenient_service-0.8.0 lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb
convenient_service-0.7.0 lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb
convenient_service-0.6.0 lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb
convenient_service-0.5.0 lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb
convenient_service-0.4.0 lib/convenient_service/service/plugins/has_result_method_steps/middleware.rb