57 lines
1.1 KiB
Ruby
57 lines
1.1 KiB
Ruby
module Middleman
|
|
# Simple shared cache implementation
|
|
class Cache
|
|
|
|
# Initialize
|
|
def initialize
|
|
self.clear
|
|
end
|
|
|
|
# Either get the cached key or save the contents of the block
|
|
#
|
|
# @param Anything Hash can use as a key
|
|
# @return Cached value
|
|
def fetch(*key)
|
|
@cache[key] ||= yield
|
|
end
|
|
|
|
# Whether the key is in the cache
|
|
#
|
|
# @param Anything Hash can use as a key
|
|
# @return [Boolean]
|
|
def has_key?(key)
|
|
@cache.has_key?(key)
|
|
end
|
|
|
|
# Get a specific key
|
|
#
|
|
# @param Anything Hash can use as a key
|
|
# @return Cached value
|
|
def get(key)
|
|
@cache[key]
|
|
end
|
|
|
|
def keys
|
|
@cache.keys
|
|
end
|
|
|
|
# Clear the entire cache
|
|
def clear
|
|
@cache = {}
|
|
end
|
|
|
|
# Set a specific key
|
|
#
|
|
# @param Anything Hash can use as a key
|
|
# @param Cached value
|
|
def set(key, value)
|
|
@cache[key] = value
|
|
end
|
|
|
|
# Remove a specific key
|
|
# @param Anything Hash can use as a key
|
|
def remove(*key)
|
|
@cache.delete(key)
|
|
end
|
|
end
|
|
end |