- FIXED: Gibbler::Complex now checks has_method? and will use that before instance variables.
- CHANGE: Gibbler is now a class which supplies the default standalone usage
- CHANGE: Ruby object mixins must now be explicitly loaded via "require 'gibbler/mixins'"
- CHANGE: Removed Gibbler.enable_debug/disable_debug
- CHANGE: Gibbler.digest now returns nil for an empty Array
- ADDED: Gibbler.delimiter
- CHANGE: Gibbler::Hash and Gibbler::Array now skip values that have no __gibbler method
- FIXED: Remove debug output.
- FIXED: Bundler calls freeze on an instance of Gem::Platform
- CHANGE: Only call gibbler_debug when in debug mode
- FIXED: Gibber::VERSION (File error)
- CHANGE: Gibbler::Complex will skip fields with no __gibbler method
- ADDED: Gibbler.debug=
ADDED: Support for Gibbler.default_base which affects all generated digests.
- ADDED: Support for global secret (Gibbler.secret) which is prepended to all digests.
- FIXED: test exception for "String has list of attic vars" tryouts when bundled with my other libraries.
- CHANGE: Gibbler::Complex.gibbler will now append fields when called multiple times.
NOTE: Digest calculation for Range objects has changed. Ranges or objects containing Ranges will have different digests than those created in previous releases.
- FIXED: "can't iterate from Float" error for Ranges containing a Float
- CHANGE: Range digests are now based on the format "CLASS:FIRST:LAST:VALUE"
- CHANGE: Gibber::Object#__gibbler now accepts only 1 optional argument: digest_type
- ADDED: Gibbler::Digest#to_i which assumes base 16
- ADDED: Gibbler::Object#gibbler now accepts a digest type
- ADDED: Gibbler::Digest#to_s and #base can take a base argument
- ADDED: Gibbler::Digest#shorten
- FIXED: The previous fix missed the case where gibbler_fields was null
- FIXED: :undefined method `each' for :fieldname:Symbol when only one element in gibbler_fields
- CHANGE: Remove hanna dependency [Diego Elio 'Flameeyes' Pettenò]
- ADDED: Support for base36 representations of digests
- FIXED: Gibbler::Complex no longer includes the '@' for instance variable names used in digest calculation.
- ADDED: Gibbler::Complex support for specifying which fields to use in digest calculation.
- FIXED: Gibbler::Complex now sorts instance variables before processing. This resolves the issue of digest compatibility between 1.8, 1.9, and JRuby.
NOTE: Digest calculation for Proc objects has changed. Procs or objects containing Procs will have different digests than those created in previous releases.
- CHANGE: Proc digests are now based on the values of obj.class and obj.name (if available).
- FIXED: Now using correct superclass for DateTime (Date)
- CHANGE: aliases.rb will now require gibbler so you don't need to specify both. i.e. require 'gibbler' require 'gibbler/aliases'
- CHANGE: Gibbler::Object#gibbler returns the value of gibbler_cache when the object is frozen, without calculation.
- ADDED: Gibbler::Object#freeze to create digest before freezing.
- ADDED: Out of the box support for Regexp (Gibbler::String)
- ADDED: Gibbler::Object#digest_cache alias for gibbler_cache
- FIXED: Won't save digest to cache if the object is frozen
- CHANGE: Renamed __gibbler_cache to gibbler_cache (with backwards compatability)
- CHANGE: Gibbler::Digest#== now returns true only for exact matches
- ADDED: Gibbler::Digest#shorter, Gibbler::Digest#tiny, Gibbler::Digest#===
- FIXED: Enforce specific string format for Time objects. Fixes an issue with Ruby 1.8.7 which formats the to_s value differently than 1.8.6 and 1.9.1.
- ADDED: Support for NilClass, File, and URI
- ADDED: Support for Date, Time, and DateTime. Time and DateTime refers to times in UTC.
- ADDED: Support for Range.
NOTE: Digest calculation for Proc and Class objects have changed. Digests created for these types will not match previous releases.
- FIXED: Proc digests no longer refer to Proc#binding
- CHANGE: The Gibbler module now raises an exception if it's included
- CHANGE: Module and Class now use the default Gibbler::Object digest
- ADDED: Gibbler::Object now contains a default digest method
- FIXED: Improved support for Symbol and Fixnum objects with Attic 0.4
- FIXED: Updated gemspec to fix missing files (aliases)
- CHANGE: conversion to attic instead of weirdo instance variables (@gibbler and @__gibbler_history)
- NEW DEPENDENCY: attic
- CHANGE: Moved Gibbler instance methods to Gibbler::Object
- ADDED: Proc.gibbler which is included by default
- ADDED: gibbler aliases to allow shorter methods by request.
- CHANGE: Renamed gibbler_revert to gibbler_revert! (Thanks ivey)
NOTE: This is a significant change from 0.4. Many method names have been modified so this release is not backwards compatible.
- CHANGE: Now refer to "gibble" as "digest" in all docs and methods.
- CHANGE: Gibbler#gibble -> Gibbler#gibbler
- CHANGE: Gibble is now Gibbler::Digest
- ADDED: Gibbler::History, supporting gibbler_snapshots and gibbler_revert for the following objects: Array, Hash
- ADDED: Support for short, 8-character digests
- ADDED: Expanded test coverage
NOTE: Calculated digests have changed since 0.3. Most digests created with 0.3 and earlier will not match those created in 0.4 for the same object
- FIXED: Hash and Array now use the class of the value for hashing rather than Hash or Array (respectively).
- FIXED: __gibbler methods now return a digest based on their own class. Previously, all digests were created by String.__gibbler so the class name from the original object got lost.
- CHANGE: Gibbler methods are no longer available to all Ruby classes by default. The default list is now: String, Hash, Array, Symbol, Class, Fixnum, Bignum.
- CHANGE: Renamed Gibbler.digest_type to Gibbler.digest_type
- ADDED: Custom objects can now "include Gibbler::Complex"
- CHANGE: Renamed to_gibble -> gibble
- CHANGE: Renamed __default_gibbler to__gibbler
- CHANGE: Created Gibbler module, all other modules can include its junk into their namespace.
- ADDED: Object#hash and performance tryouts
NOTE: Initial release