Class: Nanoc::Core::OutdatednessRules::AttributesModified
- Inherits:
-
Nanoc::Core::OutdatednessRule
- Object
- Nanoc::Core::OutdatednessRule
- Nanoc::Core::OutdatednessRules::AttributesModified
- Includes:
- ContractsSupport
- Defined in:
- lib/nanoc/core/outdatedness_rules/attributes_modified.rb
Instance Method Summary collapse
Methods included from ContractsSupport
enabled?, included, setup_once, warn_about_performance
Methods inherited from Nanoc::Core::OutdatednessRule
affects_attributes?, affects_compiled_content?, affects_path?, affects_props, affects_raw_content?, #call, #inspect
Instance Method Details
#apply(obj, basic_outdatedness_checker) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/nanoc/core/outdatedness_rules/attributes_modified.rb', line 12 def apply(obj, basic_outdatedness_checker) case obj when Nanoc::Core::ItemRep apply(obj.item, basic_outdatedness_checker) when Nanoc::Core::Item, Nanoc::Core::Layout, Nanoc::Core::Configuration if basic_outdatedness_checker.checksum_store[obj] == basic_outdatedness_checker.checksums.checksum_for(obj) return nil end old_checksums = basic_outdatedness_checker.checksum_store.attributes_checksum_for(obj) unless old_checksums return Nanoc::Core::OutdatednessReasons::AttributesModified.new(true) end new_checksums = basic_outdatedness_checker.checksums.attributes_checksum_for(obj) attributes = Set.new(old_checksums.keys) + Set.new(new_checksums.keys) changed_attributes = attributes.reject { |a| old_checksums[a] == new_checksums[a] } if changed_attributes.any? Nanoc::Core::OutdatednessReasons::AttributesModified.new(changed_attributes) end else raise ArgumentError end end |