Sha256: 831dc3c7eb2a16c554eccd481324cca7d62bd76f2ffa3cbea0db5e7838f04358

Contents?: true

Size: 977 Bytes

Versions: 3

Compression:

Stored size: 977 Bytes

Contents

# frozen_string_literal: true

require 'attr/gather/aggregators/base'

module Attr
  module Gather
    module Aggregators
      # Shallowly merges results
      #
      # @api public
      class ShallowMerge < Base
        # Initialize a new DeepMerge aggregator
        #
        # @param reverse [Boolean] merge results in reverse order
        # @param merge_input [Boolean] merge the result with the initial input
        #
        # @api private
        def initialize(reverse: false, merge_input: true, **)
          @reverse = reverse
          @merge_input = merge_input
          super
        end

        def call(input, execution_results)
          execution_results = execution_results.reverse_each if reverse?

          execution_results.reduce(@merge_input ? input : EMPTY_HASH) do |memo, res|
            memo.merge(unwrap_result(res))
          end
        end

        private

        def reverse?
          @reverse
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
attr-gather-1.5.1 lib/attr/gather/aggregators/shallow_merge.rb
attr-gather-1.4.0 lib/attr/gather/aggregators/shallow_merge.rb
attr-gather-1.2.1 lib/attr/gather/aggregators/shallow_merge.rb