gems.sass-3.5.5.lib.sass.cache_stores.chain.rb Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sass-maven-plugin Show documentation
Show all versions of sass-maven-plugin Show documentation
A Maven Plugin that compiles Sass files.
module Sass
module CacheStores
# A meta-cache that chains multiple caches together.
# Specifically:
#
# * All `#store`s are passed to all caches.
# * `#retrieve`s are passed to each cache until one has a hit.
# * When one cache has a hit, the value is `#store`d in all earlier caches.
class Chain < Base
# Create a new cache chaining the given caches.
#
# @param caches [Array] The caches to chain.
def initialize(*caches)
@caches = caches
end
# @see Base#store
def store(key, sha, obj)
@caches.each {|c| c.store(key, sha, obj)}
end
# @see Base#retrieve
def retrieve(key, sha)
@caches.each_with_index do |c, i|
obj = c.retrieve(key, sha)
next unless obj
@caches[0...i].each {|prev| prev.store(key, sha, obj)}
return obj
end
nil
end
end
end
end
© 2015 - 2025 Weber Informatics LLC | Privacy Policy