module DigestibleAttributes::Digester

Constants

FIELD_ESCAPE
FIELD_SEPARATOR
NULL_ESCAPE

Public Instance Methods

calculate_digest() click to toggle source
# File lib/digestible_attributes/digester.rb, line 9
def calculate_digest
  OpenSSL::Digest(self.class.digest_algorithm).hexdigest(digestible_string)
end

Private Instance Methods

digestible_string() click to toggle source
# File lib/digestible_attributes/digester.rb, line 19
def digestible_string
  symbolized_digest_fields.map do |field, value|
    base_str = "#{field}#{FIELD_ESCAPE}"
    if value.nil?
      base_str += NULL_ESCAPE
    else
      base_str += value.to_s
    end
  end.join(FIELD_SEPARATOR)
end
symbolized_digest_fields() click to toggle source
# File lib/digestible_attributes/digester.rb, line 15
def symbolized_digest_fields
  attributes.symbolize_keys.slice(*self.class.digest_fields)
end