In Files

Included Modules

Gibbler::Complex

Creates a digest based on:

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

Public Class Methods

gibbler(*fields) click to toggle source
# File lib/gibbler.rb, line 333
def self.gibbler *fields
  @__gibbler_fields.push *fields
end
gibbler_fields() click to toggle source
# File lib/gibbler.rb, line 330
def self.gibbler_fields
  @__gibbler_fields
end
included(obj) click to toggle source
# 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
inherited(obj) click to toggle source
# File lib/gibbler.rb, line 336
def self.inherited(obj)
  obj.extend Attic
  obj.attic :gibbler_cache
  fields = @__gibbler_fields.clone
  obj.class_eval do
    @__gibbler_fields = fields
  end
end

Public Instance Methods

__gibbler(digest_type=nil) click to toggle source

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
__gibbler_revert!() click to toggle source
# File lib/gibbler.rb, line 376
def __gibbler_revert!
  state = self.gibbler_object self.gibbler_cache
  state.instance_variables do |n|
    v = state.instance_variable_get n
    self.instance_variable_set v
  end
end
gibbler_fields() click to toggle source
# File lib/gibbler.rb, line 347
def gibbler_fields
  f = [self.class.gibbler_fields].compact.flatten
  if f.empty?
    f = instance_variables.sort.collect { |n|
      n.to_s[1..-1].to_sym # remove the '@'
    }
  end
  f
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.