class ActiveUxid::Hash
Public Class Methods
decode(id)
click to toggle source
# File lib/active_uxid/hash.rb, line 15 def self.decode(id) klass = new(id) klass.decode_uxid end
encode(id)
click to toggle source
# File lib/active_uxid/hash.rb, line 10 def self.encode(id) klass = new(id) klass.encode_uxid end
new(id)
click to toggle source
Calls superclass method
ActiveUxid::Base::new
# File lib/active_uxid/hash.rb, line 5 def initialize(id) @id = id super() end
Public Instance Methods
decode_uxid()
click to toggle source
# File lib/active_uxid/hash.rb, line 24 def decode_uxid (uxid_decode_chars(@id) >> encoding_length) - encoding_salt end
encode_uxid()
click to toggle source
# File lib/active_uxid/hash.rb, line 20 def encode_uxid uxid_encode_chars((@id + encoding_salt) << encoding_length) end
uxid_decode_chars(id)
click to toggle source
# File lib/active_uxid/hash.rb, line 42 def uxid_decode_chars(id) pos = 0 num = 0 len = id.length max = len - 1 while pos < len pow = encoding_base**(max - pos) num += encoding_chars.index(id[pos]) * pow pos += 1 end num end
uxid_encode_chars(id)
click to toggle source
# File lib/active_uxid/hash.rb, line 28 def uxid_encode_chars(id) return '0' if id.zero? return nil if id.negative? str = '' while id.positive? str = "#{encoding_chars[id % encoding_base]}#{str}" id /= encoding_base end str end