Sha256: ca76a51ae0a65a7c505312a110ee69dee0fed3f33624df357b7f0d370ee635e4

Contents?: true

Size: 939 Bytes

Versions: 92

Compression:

Stored size: 939 Bytes

Contents

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<Sass::CacheStores::Base>] 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|
          next unless obj = c.retrieve(key, sha)
          @caches[0...i].each {|prev| prev.store(key, sha, obj)}
          return obj
        end
        nil
      end
    end
  end
end

Version data entries

92 entries across 87 versions & 9 rubygems

Version Path
sass-3.3.0.alpha.225 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.224 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.222 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.218 lib/sass/cache_stores/chain.rb
sass-3.2.10 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.216 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.215 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.214 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.213 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.212 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.211 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.201 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.198 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.196 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.195 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.181 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.184 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.177 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.175 lib/sass/cache_stores/chain.rb
sass-3.3.0.alpha.174 lib/sass/cache_stores/chain.rb