Module: DigestD8a
- Defined in:
- lib/d8a/digestd8a.rb
Overview
Add MD5 digest attributes to data.
Instance Attribute Summary collapse
-
#digests ⇒ Object
d8m -> [mod time, digest] info for datum that we’ve seen.
Class Method Summary collapse
Instance Method Summary collapse
-
#compute_digest(d8m) ⇒ Object
forces recomputation of digest for a d8m.
-
#compute_digests ⇒ Object
force recomputation of all digests.
Instance Attribute Details
#digests ⇒ Object
d8m -> [mod time, digest] info for datum that we’ve seen
33 34 35 |
# File 'lib/d8a/digestd8a.rb', line 33 def digests @digests end |
Class Method Details
.extended(d8a) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/d8a/digestd8a.rb', line 36 def DigestD8a.extended(d8a) d8a.extend CacheD8a d8a.synthetic_attr :md5 # redefine read/write to capture digests class << d8a alias_method :__digestd8a_read, :read def read(d8m) __digestd8a_read(d8m) do |f| f.extend(DigestIO) result = yield f self[d8m, :md5] = f.digest.to_s result end end alias_method :__digestd8a_write, :write def write(d8m) digest = nil __digestd8a_write(d8m) do |f| f.extend(DigestIO) digest = f.digest yield f end # have to set this after the block since the id_attrs check # in the caching logic will blow away anything we set before # write returns self[d8m, :md5] = digest.to_s end end end |
Instance Method Details
#compute_digest(d8m) ⇒ Object
forces recomputation of digest for a d8m
74 75 76 |
# File 'lib/d8a/digestd8a.rb', line 74 def compute_digest(d8m) read(d8m) {|f|} end |
#compute_digests ⇒ Object
force recomputation of all digests
80 81 82 |
# File 'lib/d8a/digestd8a.rb', line 80 def compute_digests self.each { |d8m| compute_md5(d8m) } end |