Creates a digest based on:
An Array of instance variable names or method names and values in the format: CLASS:LENGTH:VALUE
Return the digest for class:length:value where:
This method can be used by any class which stores values in instance variables.
class Episodes include Gibbler::Complex attr_accessor :season, :year, :cast end
# File lib/gibbler.rb, line 333 def self.gibbler *fields @__gibbler_fields.push *fields end
# File lib/gibbler.rb, line 330 def self.gibbler_fields @__gibbler_fields end
# File lib/gibbler.rb, line 325 def self.included(obj) obj.extend Attic obj.attic :gibbler_cache obj.class_eval do @__gibbler_fields = [] def self.gibbler_fields @__gibbler_fields end def self.gibbler *fields @__gibbler_fields.push *fields end def self.inherited(obj) obj.extend Attic obj.attic :gibbler_cache fields = @__gibbler_fields.clone obj.class_eval do @__gibbler_fields = fields end end end end
Creates a digest for the current state of self.
# File lib/gibbler.rb, line 358 def __gibbler(digest_type=nil) klass = self.class d = [] gibbler_debug :gibbler_fields, gibbler_fields gibbler_fields.each do |n| value = respond_to?(n) ? send(n) : instance_variable_get("@#{n}") unless value.respond_to? :__gibbler gibbler_debug klass, :skipping, n next end d << '%s:%s:%s' % [value.class, n, value.__gibbler(digest_type)] end d = d.join(Gibbler.delimiter).__gibbler(digest_type) a = Gibbler.digest "%s:%d:%s" % [klass, d.size, d], digest_type gibbler_debug klass, a, [klass, d.size, d] a end
Generated with the Darkfish Rdoc Generator 2.