Sha256: 522d64bc8a3f7333cd469cdecf39f7efac89a03059e6577cb382d4406af7ecde
Contents?: true
Size: 950 Bytes
Versions: 7
Compression:
Stored size: 950 Bytes
Contents
require 'pstore' require 'forwardable' module Anemone module Storage class PStore extend Forwardable def_delegators :@keys, :has_key?, :keys, :size def initialize(file) File.delete(file) if File.exists?(file) @store = ::PStore.new(file) @keys = {} end def [](key) @store.transaction { |s| s[key] } end def []=(key,value) @keys[key] = nil @store.transaction { |s| s[key] = value } end def delete(key) @keys.delete(key) @store.transaction { |s| s.delete key} end def each @keys.each_key do |key| value = nil @store.transaction { |s| value = s[key] } yield key, value end end def merge!(hash) @store.transaction do |s| hash.each { |key, value| s[key] = value; @keys[key] = nil } end self end end end end
Version data entries
7 entries across 7 versions & 2 rubygems