Sha256: 0f1d0335863a9cfebcbdf07a0b3ec930652dc2c40c5752a21c00d491380f6d0a

Contents?: true

Size: 916 Bytes

Versions: 7

Compression:

Stored size: 916 Bytes

Contents

module Moneta
  # This contains overrides of methods in Defaults where additional nil
  # checks are required, because nil values are possible in the store.
  # @api private
  module NilValues
    def fetch_values(*keys, **options)
      values = values_at(*keys, **options)
      return values unless block_given?
      keys.zip(values).map do |key, value|
        if value == nil && !key?(key)
          yield key
        else
          value
        end
      end
    end

    def slice(*keys, **options)
      keys.zip(values_at(*keys, **options)).reject do |key, value|
        value == nil && !key?(key)
      end
    end

    def merge!(pairs, options = {})
      pairs.each do |key, value|
        if block_given? && key?(key, options)
          existing = load(key, options)
          value = yield(key, existing, value)
        end
        store(key, value, options)
      end
      self
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

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