Sha256: 308c952756f6ef77054ae5f0e4c3911d7997137b128369166490ee3f71f9e9e2

Contents?: true

Size: 469 Bytes

Versions: 7

Compression:

Stored size: 469 Bytes

Contents

require "attributable"

module Metamorpher
  module Transformer
    Merger = Struct.new(:original) do
      def merge(*replacements, &block)
        original.dup.tap do |merged|
          replacements.sort.reduce(0) do |offset, replacement|
            yield replacement if block
            replacement = replacement.slide(offset)
            replacement.merge_into(merged)
            offset + replacement.offset
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
metamorpher-0.2.6 lib/metamorpher/transformer/merger.rb
metamorpher-0.2.5 lib/metamorpher/transformer/merger.rb
metamorpher-0.2.4 lib/metamorpher/transformer/merger.rb
metamorpher-0.2.3 lib/metamorpher/transformer/merger.rb
metamorpher-0.2.2 lib/metamorpher/transformer/merger.rb
metamorpher-0.2.1 lib/metamorpher/transformer/merger.rb
metamorpher-0.2.0 lib/metamorpher/transformer/merger.rb