Sha256: 657ad2fce975a58cad498e8827dff25ea2fff9e5921a8db173aeb4a0dfb1efea

Contents?: true

Size: 972 Bytes

Versions: 16

Compression:

Stored size: 972 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

      def close; end

    end
  end
end

Version data entries

16 entries across 16 versions & 4 rubygems

Version Path
sutch-anemone-0.7.2.2 lib/anemone/storage/pstore.rb
sutch-anemone-0.7.2.1 lib/anemone/storage/pstore.rb
sutch-anemone-0.7.2 lib/anemone/storage/pstore.rb
rodneyc-anemone-0.7.1.3 lib/anemone/storage/pstore.rb
rodneyc-anemone-0.7.1.2 lib/anemone/storage/pstore.rb
rodneyc-anemone-0.7.1.1 lib/anemone/storage/pstore.rb
anemone-0.7.2 lib/anemone/storage/pstore.rb
anemone-0.7.1 lib/anemone/storage/pstore.rb
anemone-0.7.0 lib/anemone/storage/pstore.rb
arachni-0.2.4 lib/anemone/storage/pstore.rb
arachni-0.2.3 lib/anemone/storage/pstore.rb
arachni-0.2.2.2 lib/anemone/storage/pstore.rb
anemone-0.6.1 lib/anemone/storage/pstore.rb
anemone-0.6.0 lib/anemone/storage/pstore.rb
arachni-0.2.2.1 lib/anemone/storage/pstore.rb
anemone-0.5.0 lib/anemone/storage/pstore.rb