Sha256: 99c995f911ed4ee8a712548117e3c2effbf1eaee21e239fa61d35f46607a0e65
Contents?: true
Size: 1.58 KB
Versions: 1
Compression:
Stored size: 1.58 KB
Contents
# frozen_string_literal: true module Nanoc module Int class Compiler module Phases # Provides functionality for (re)calculating the content of an item rep, with caching or # outdatedness checking. Delegates to s::Recalculate if outdated or no cache available. class Cache < Abstract include Nanoc::Core::ContractsSupport def initialize(wrapped:, compiled_content_cache:, compiled_content_store:) super(wrapped: wrapped) @compiled_content_cache = compiled_content_cache @compiled_content_store = compiled_content_store end contract Nanoc::Core::ItemRep, C::KeywordArgs[is_outdated: C::Bool], C::Func[C::None => C::Any] => C::Any def run(rep, is_outdated:) if can_reuse_content_for_rep?(rep, is_outdated: is_outdated) Nanoc::Core::NotificationCenter.post(:cached_content_used, rep) @compiled_content_store.set_all(rep, @compiled_content_cache[rep]) else yield end rep.compiled = true @compiled_content_cache[rep] = @compiled_content_store.get_all(rep) end contract Nanoc::Core::ItemRep, C::KeywordArgs[is_outdated: C::Bool] => C::Bool def can_reuse_content_for_rep?(rep, is_outdated:) if is_outdated false else cache = @compiled_content_cache[rep] cache ? cache.none? { |_snapshot_name, content| content.binary? } : false end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nanoc-4.11.1 | lib/nanoc/base/services/compiler/phases/cache.rb |