class Nanoc::Core::ChecksumStore
Stores checksums for objects in order to be able to detect whether a file has changed since the last site compilation.
@api private
Attributes
checksums[W]
objects[RW]
Public Class Methods
new(config:, objects:)
click to toggle source
Calls superclass method
Nanoc::Core::Store::new
# File lib/nanoc/core/checksum_store.rb, line 18 def initialize(config:, objects:) super(Nanoc::Core::Store.tmp_path_for(config: config, store_name: 'checksums'), 2) @objects = objects @checksums = {} end
Public Instance Methods
[](obj)
click to toggle source
# File lib/nanoc/core/checksum_store.rb, line 27 def [](obj) @checksums[obj.reference] end
add(obj)
click to toggle source
# File lib/nanoc/core/checksum_store.rb, line 32 def add(obj) if obj.is_a?(Nanoc::Core::Document) @checksums[[obj.reference, :content]] = Nanoc::Core::Checksummer.calc_for_content_of(obj) end if obj.is_a?(Nanoc::Core::Document) || obj.is_a?(Nanoc::Core::Configuration) @checksums[[obj.reference, :each_attribute]] = Nanoc::Core::Checksummer.calc_for_each_attribute_of(obj) end @checksums[obj.reference] = Nanoc::Core::Checksummer.calc(obj) self end
attributes_checksum_for(obj)
click to toggle source
# File lib/nanoc/core/checksum_store.rb, line 52 def attributes_checksum_for(obj) @checksums[[obj.reference, :each_attribute]] end
content_checksum_for(obj)
click to toggle source
# File lib/nanoc/core/checksum_store.rb, line 47 def content_checksum_for(obj) @checksums[[obj.reference, :content]] end
Protected Instance Methods
data()
click to toggle source
# File lib/nanoc/core/checksum_store.rb, line 58 def data @checksums end
data=(new_data)
click to toggle source
# File lib/nanoc/core/checksum_store.rb, line 62 def data=(new_data) references = Set.new(@objects.map(&:reference)) @checksums = {} new_data.each_pair do |key, checksum| if references.include?(key) || (key.respond_to?(:first) && references.include?(key.first)) @checksums[key] = checksum end end end