lib/lite/uxid/hashid.rb in lite-uxid-1.1.3 vs lib/lite/uxid/hashid.rb in lite-uxid-1.2.0
- old
+ new
@@ -1,62 +1,43 @@
# frozen_string_literal: true
module Lite
module Uxid
- class Hashid < Lite::Uxid::Base
+ class Hashid < Reversible
- def initialize(id)
- @id = id
- super()
- end
-
- class << self
-
- def encode(id)
- klass = new(id)
- klass.encode
- end
-
- def decode(id)
- klass = new(id)
- klass.decode
- end
-
- end
-
def encode
- encode_chars((@id + encoding_salt) << encoding_length)
+ encode_chars((id + coder_salt) << coder_length)
end
def decode
- (decode_chars(@id) >> encoding_length) - encoding_salt
+ (decode_chars(id) >> coder_length) - coder_salt
end
private
- def encode_chars(id)
- return '0' if id.zero?
- return nil if id.negative?
+ def encode_chars(decoded_id)
+ return "0" if decoded_id.zero?
+ return nil if decoded_id.negative?
- str = ''
+ str = ""
- while id.positive?
- str = "#{encoding_chars[id % encoding_base]}#{str}"
- id /= encoding_base
+ while decoded_id.positive?
+ str = "#{coder_chars[decoded_id % coder_base]}#{str}"
+ decoded_id /= coder_base
end
str
end
- def decode_chars(id)
+ def decode_chars(encoded_id)
pos = 0
num = 0
- len = id.length
+ len = encoded_id.length
max = len - 1
while pos < len
- pow = encoding_base**(max - pos)
- num += encoding_chars.index(id[pos]) * pow
+ pow = coder_base**(max - pos)
+ num += coder_chars.index(encoded_id[pos]) * pow
pos += 1
end
num
end