Sha256: 06d5bc03738616ec63dc3796321fff219c3d7a914995ec20d3e55231354ed5ed

Contents?: true

Size: 1.02 KB

Versions: 16

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module Nanoc::Int::Compiler::Stages
  class DetermineOutdatedness < Nanoc::Int::Compiler::Stage
    include Nanoc::Int::ContractsSupport

    def initialize(reps:, outdatedness_checker:, outdatedness_store:)
      @reps = reps
      @outdatedness_checker = outdatedness_checker
      @outdatedness_store = outdatedness_store
    end

    contract C::None => C::Any
    def run
      outdated_items = select_outdated_items
      outdated_reps = reps_of_items(outdated_items)

      store_outdated_reps(outdated_reps)

      outdated_items
    end

    private

    def store_outdated_reps(reps)
      @outdatedness_store.clear
      reps.each { |r| @outdatedness_store.add(r) }
    end

    def select_outdated_items
      @reps
        .select { |r| outdated?(r) }
        .map(&:item)
        .uniq
    end

    def reps_of_items(items)
      Set.new(items.flat_map { |i| @reps[i] })
    end

    def outdated?(rep)
      @outdatedness_store.include?(rep) || @outdatedness_checker.outdated?(rep)
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
nanoc-4.11.0 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.10.4 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.10.3 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.10.2 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.10.1 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.10.0 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.9 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.8 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.7 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.6 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.5 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.4 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.3 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.2 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.1 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.9.0 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb