Sha256: 7c00d9eb6ca1b6bfc1277a932eb9b1ec0315838277229201a8e72fed886d8521

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

# frozen_string_literal: true

module ConvenientService
  module Core
    module Entities
      class Config
        module Entities
          class MethodMiddlewares
            module Entities
              ##
              # @internal
              #   NOTE: Do NOT pollute the interface of this class until really needed.
              #
              class Chain
                ##
                # @param stack [#call<Hash>]
                # @param env [Hash]
                # @return [void]
                #
                def initialize(stack:, env: {})
                  @stack = stack
                  @env = env
                end

                ##
                # @param args [Array<Object>]
                # @param kwargs [Hash{Symbol => Object}]
                # @param block [Proc, nil]
                # @return [Object] Can be any type.
                #
                # @internal
                #   TODO: Enforce to always pass args, kwargs, block.
                #
                def next(*args, **kwargs, &block)
                  stack.call(env.merge(args: args, kwargs: kwargs, block: block))
                end

                ##
                # @param other [ConvenientService::Core::Entities::Config::Entities::MethodMiddlewares::Entities::Chain, Object]
                # @return [Boolean]
                #
                def ==(other)
                  return unless other.instance_of?(self.class)

                  return false if stack != other.stack
                  return false if env != other.env

                  true
                end

                protected

                ##
                # @!attribute [r] stack
                #   @return [#call<Hash>]
                #
                attr_reader :stack

                ##
                # @!attribute [r] env
                #   @return [Hash]
                #
                attr_reader :env
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
convenient_service-0.12.0 lib/convenient_service/core/entities/config/entities/method_middlewares/entities/chain.rb