Sha256: ca7ea3587a0b2a26791f9514b1506fb5fcfd75a7bad33333f8e7d5194f22ef09

Contents?: true

Size: 706 Bytes

Versions: 7

Compression:

Stored size: 706 Bytes

Contents

module Moneta
  # This is for adapters that conform to the DBM interface
  # @api private
  module DBMAdapter
    include HashAdapter

    # (see Proxy#close)
    def close
      @backend.close
      nil
    end

    # (see Proxy#merge!)
    def merge!(pairs, options = {})
      hash =
        if block_given?
          keys = pairs.map { |k, _| k }
          old_pairs = Hash[slice(*keys)]
          Hash[pairs.map do |key, new_value|
            new_value = yield(key, old_pairs[key], new_value) if old_pairs.key?(key)
            [key, new_value]
          end.to_a]
        else
          Hash === pairs ? pairs : Hash[pairs.to_a]
        end

      @backend.update(hash)
      self
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
moneta-1.6.0 lib/moneta/dbm_adapter.rb
moneta-1.5.2 lib/moneta/dbm_adapter.rb
moneta-1.5.1 lib/moneta/dbm_adapter.rb
moneta-1.5.0 lib/moneta/dbm_adapter.rb
moneta-1.4.2 lib/moneta/dbm_adapter.rb
moneta-1.4.1 lib/moneta/dbm_adapter.rb
moneta-1.4.0 lib/moneta/dbm_adapter.rb