Sha256: 3c020a8f7aad17782d6600e96c52ba40072c37bdbb20fdc34c8da502538652a8
Contents?: true
Size: 1.74 KB
Versions: 2
Compression:
Stored size: 1.74 KB
Contents
module Nanoc::Int # Represents a cache than can be used to store already compiled content, # to prevent it from being needlessly recompiled. # # @api private class CompiledContentCache < ::Nanoc::Int::Store def initialize(env_name: nil, items:) super(Nanoc::Int::Store.tmp_path_for(env_name: env_name, store_name: 'compiled_content'), 2) @items = items @cache = {} end # Returns the cached compiled content for the given item # representation. This cached compiled content is a hash where the keys # are the snapshot names and the values the compiled content at the # given snapshot. # # @param [Nanoc::Int::ItemRep] rep The item rep to fetch the content for # # @return [Hash<Symbol,String>] A hash containing the cached compiled # content for the given item representation def [](rep) item_cache = @cache[rep.item.identifier] || {} item_cache[rep.name] end # Sets the compiled content for the given representation. # # @param [Nanoc::Int::ItemRep] rep The item representation for which to set # the compiled content # # @param [Hash<Symbol,String>] content A hash containing the compiled # content of the given representation # # @return [void] def []=(rep, content) @cache[rep.item.identifier] ||= {} @cache[rep.item.identifier][rep.name] = content end protected def data @cache end def data=(new_data) @cache = {} item_identifiers = Set.new(@items.map(&:identifier)) new_data.each_pair do |item_identifier, content_per_rep| if item_identifiers.include?(item_identifier) @cache[item_identifier] ||= content_per_rep end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nanoc-4.4.4 | lib/nanoc/base/repos/compiled_content_cache.rb |
nanoc-4.4.3 | lib/nanoc/base/repos/compiled_content_cache.rb |