Skip to content

Commit

Permalink
ADDED: Support for Gibbler.default_base which affects all generated d…
Browse files Browse the repository at this point in the history
…igests.
  • Loading branch information
delano committed Jun 19, 2010
1 parent dfbbd6b commit ff079f4
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 10 deletions.
5 changes: 4 additions & 1 deletion CHANGES.txt
@@ -1,6 +1,9 @@
GIBBLER, CHANGES

* TODO: Global salt

#### 0.8.4 (2010-06-19) ###############################

ADDED: Support for Gibbler.default_base which affects all generated digests.

#### 0.8.3 (2010-05-04) ###############################

Expand Down
20 changes: 11 additions & 9 deletions lib/gibbler.rb
Expand Up @@ -17,9 +17,10 @@
module Gibbler
VERSION = "0.8.3"

@default_base = 16
@secret = nil
class << self
attr_accessor :secret
attr_accessor :secret, :default_base
end

require 'gibbler/mixins'
Expand All @@ -29,27 +30,26 @@ def initialize(obj); @obj = obj; end
end
end


# = Gibbler::Digest
#
# A tiny subclass of String which adds a
# few digest related convenience methods.
#
class Gibbler::Digest < String

# Return an integer assuming base 16.
# Return an integer assuming base is Gibbler.default_base.
def to_i(base=nil)
base ||= 16
base ||= Gibbler.default_base
super(base)
end

# Returns a string. Takes an optional base.
def to_s(base=nil)
base.nil? ? super() : super().to_i(16).to_s(base)
base.nil? ? super() : super().to_i(Gibbler.default_base).to_s(base)
end

def base(base=16)
self.class.new(self.to_i(16).to_s(base))
def base(base=Gibbler.default_base)
self.class.new(self.to_i(Gibbler.default_base).to_s(base))
end

def base36
Expand Down Expand Up @@ -77,7 +77,7 @@ def short
# e.g.
#
# "kimmy".gibbler # => c8027100ecc54945ab15ddac529230e38b1ba6a1
# "kimmy".gibbler.tiny # => c80271
# "kimmy".gibbler.shorter # => c80271
#
def shorter
shorten(6)
Expand Down Expand Up @@ -235,7 +235,9 @@ def self.digest_type; @@gibbler_digest_type; end
def self.digest(str, digest_type=nil)
digest_type ||= @@gibbler_digest_type
str = [Gibbler.secret, str].join(':') unless Gibbler.secret.nil?
digest_type.hexdigest str
dig = digest_type.hexdigest(str)
dig = dig.to_i(16).to_s(Gibbler.default_base) if 16 != Gibbler.default_base
dig
end

def self.gibbler_debug(*args)
Expand Down

0 comments on commit ff079f4

Please sign in to comment.