Move Cache into Util

This commit is contained in:
Thomas Reynolds 2012-04-14 14:06:49 -07:00
parent d2d40079cc
commit 8a1342df9c
3 changed files with 57 additions and 62 deletions

View file

@ -31,5 +31,60 @@ module Middleman
def self.normalize_path(path)
path.sub(/^\//, "").gsub("%20", " ")
end
# 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
end