Sha256: 91cea0b829762e1b4af613d3bc9084c9d9b989b581fb305fdf1a17f0262ffa4b

Contents?: true

Size: 1010 Bytes

Versions: 8

Compression:

Stored size: 1010 Bytes

Contents

# frozen_string_literal: true

module Nanoc::Int::Compiler::Stages
  class DetermineOutdatedness
    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?(r)
      @outdatedness_store.include?(r) || @outdatedness_checker.outdated?(r)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
nanoc-4.8.17 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.8.16 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.8.15 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.8.14 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.8.13 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.8.12 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.8.11 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb
nanoc-4.8.10 lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb