Sha256: 687f4a3802e3eb3e1d981bc6380aa7e8a4d3552f38198279a865641f1bf2347e

Contents?: true

Size: 1.36 KB

Versions: 8

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

module Nanoc
  module Int
    module OutdatednessRules
      class RulesModified < Nanoc::Int::OutdatednessRule
        affects_props :compiled_content, :path

        def apply(obj, outdatedness_checker)
          # Check rules of obj itself
          if rules_modified?(obj, outdatedness_checker)
            return Nanoc::Int::OutdatednessReasons::RulesModified
          end

          # Check rules of layouts used by obj
          layouts = layouts_touched_by(obj, outdatedness_checker)
          if layouts.any? { |layout| rules_modified?(layout, outdatedness_checker) }
            return Nanoc::Int::OutdatednessReasons::RulesModified
          end

          nil
        end

        private

        def rules_modified?(obj, outdatedness_checker)
          seq_old = outdatedness_checker.action_sequence_store[obj]
          seq_new = outdatedness_checker.action_sequence_for(obj).serialize

          !seq_old.eql?(seq_new)
        end

        def layouts_touched_by(obj, outdatedness_checker)
          actions = outdatedness_checker.action_sequence_store[obj]
          layout_actions = actions.select { |a| a.first == :layout }

          layout_actions.map do |layout_action|
            layout_pattern = layout_action[1]
            outdatedness_checker.site.layouts[layout_pattern]
          end.compact
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
nanoc-4.11.8 lib/nanoc/base/services/outdatedness_rules/rules_modified.rb
nanoc-4.11.7 lib/nanoc/base/services/outdatedness_rules/rules_modified.rb
nanoc-4.11.6 lib/nanoc/base/services/outdatedness_rules/rules_modified.rb
nanoc-4.11.5 lib/nanoc/base/services/outdatedness_rules/rules_modified.rb
nanoc-4.11.4 lib/nanoc/base/services/outdatedness_rules/rules_modified.rb
nanoc-4.11.3 lib/nanoc/base/services/outdatedness_rules/rules_modified.rb
nanoc-4.11.2 lib/nanoc/base/services/outdatedness_rules/rules_modified.rb
nanoc-4.11.1 lib/nanoc/base/services/outdatedness_rules/rules_modified.rb