Sha256: 1c6c113856306cc0acdacb7e8205822c4da1d445458880b2c21e658cf3993a30

Contents?: true

Size: 1.62 KB

Versions: 41

Compression:

Stored size: 1.62 KB

Contents

# frozen_string_literal: true

module Nanoc::Int::Compiler::Phases
  # Provides functionality for (re)calculating the content of an item rep, without caching or
  # outdatedness checking.
  class Recalculate < Abstract
    include Nanoc::Int::ContractsSupport

    def initialize(action_sequences:, dependency_store:, compilation_context:)
      super(wrapped: nil)

      @action_sequences = action_sequences
      @dependency_store = dependency_store
      @compilation_context = compilation_context
    end

    contract Nanoc::Int::ItemRep, C::KeywordArgs[is_outdated: C::Bool], C::Func[C::None => C::Any] => C::Any
    def run(rep, is_outdated:) # rubocop:disable Lint/UnusedMethodArgument
      dependency_tracker = Nanoc::Int::DependencyTracker.new(@dependency_store)
      dependency_tracker.enter(rep.item)

      executor = Nanoc::Int::Executor.new(rep, @compilation_context, dependency_tracker)

      @compilation_context.snapshot_repo.set(rep, :last, rep.item.content)

      actions = @action_sequences[rep]
      actions.each do |action|
        case action
        when Nanoc::Int::ProcessingActions::Filter
          executor.filter(action.filter_name, action.params)
        when Nanoc::Int::ProcessingActions::Layout
          executor.layout(action.layout_identifier, action.params)
        when Nanoc::Int::ProcessingActions::Snapshot
          action.snapshot_names.each do |snapshot_name|
            executor.snapshot(snapshot_name)
          end
        else
          raise Nanoc::Int::Errors::InternalInconsistency, "unknown action #{action.inspect}"
        end
      end
    ensure
      dependency_tracker.exit
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
nanoc-4.11.0 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.10.4 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.10.3 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.10.2 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.10.1 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.10.0 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.9 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.8 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.7 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.6 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.5 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.4 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.3 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.2 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.1 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.9.0 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.8.19 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.8.18 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.8.17 lib/nanoc/base/services/compiler/phases/recalculate.rb
nanoc-4.8.16 lib/nanoc/base/services/compiler/phases/recalculate.rb