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