blob: ccf64beaab6dffb3100caae50f1d7bd7c370ac04 [file] [log] [blame]
module Sass
module CacheStores
# A backend for the Sass cache using in-process memory.
class Memory < Base
# Since the {Memory} store is stored in the Sass tree's options hash,
# when the options get serialized as part of serializing the tree,
# you get crazy exponential growth in the size of the cached objects
# unless you don't dump the cache.
#
# @private
def _dump(depth)
""
end
# If we deserialize this class, just make a new empty one.
#
# @private
def self._load(repr)
Memory.new
end
# Create a new, empty cache store.
def initialize
@contents = {}
end
# @see Base#retrieve
def retrieve(key, sha)
return unless @contents.has_key?(key)
return unless @contents[key][:sha] == sha
obj = @contents[key][:obj]
obj.respond_to?(:deep_copy) ? obj.deep_copy : obj.dup
end
# @see Base#store
def store(key, sha, obj)
@contents[key] = {:sha => sha, :obj => obj}
end
# Destructively clear the cache.
def reset!
@contents = {}
end
end
end
end