Sha256: 2117530d45fe9cb704da223caa4f27b3a62c20b714692bf1533451b7ce7e6c82

Contents?: true

Size: 1.04 KB

Versions: 27

Compression:

Stored size: 1.04 KB

Contents

require 'json'
require 'pstore'
require 'fileutils'

# JSONStore provides the same functionality as PStore, except it uses JSON
# to dump objects instead of Marshal.
# Example use:
#   store = JSONStore.new("json_store/json_test.json")
#   # Write
#   store.transaction { store["key"]="value" }
#   # Read
#   value = store.transaction { store["key"] }
#   puts value # prints "value"
#   # Dump the whole store
#   hash = store.transaction { store.to_h }
#   p hash # prints {"key" => "value"}

class JSONStore < PStore

  def dump(table)
    table.to_json
  end

  def load(content)
    JSON.parse(content)
  end


  # Dumps the whole store to hash
  # example:
  # store = JSONStore.new("my_file.json")
  # hash = store.transaction { store.to_h }
  def to_h
    @table
  end


  def marshal_dump_supports_canonical_option?
    false
  end

  EMPTY_MARSHAL_DATA = {}.to_json
  EMPTY_MARSHAL_CHECKSUM = Digest::MD5.digest(EMPTY_MARSHAL_DATA)
  def empty_marshal_data
    EMPTY_MARSHAL_DATA
  end
  def empty_marshal_checksum
    EMPTY_MARSHAL_CHECKSUM
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
nutella_lib-0.4.9 lib/util/json_store.rb
nutella_lib-0.4.8 lib/util/json_store.rb
nutella_lib-0.4.7 lib/util/json_store.rb
nutella_lib-0.4.6 lib/util/json_store.rb
nutella_lib-0.4.5 lib/util/json_store.rb
nutella_lib-0.4.4 lib/util/json_store.rb
nutella_lib-0.4.3 lib/util/json_store.rb