Sha256: a080c3fe9a9e8a20565e7429736b68eb8f0ccd3b502a15a9ed3d439224332a00

Contents?: true

Size: 661 Bytes

Versions: 1

Compression:

Stored size: 661 Bytes

Contents

require "./lib/simple-hasher/version"

module SimpleHasher
  ALLOWED_CHARS = "CLK0oXklU2d6RvTrS1aDBx9GfN3e7FnQOtsmPi85MYq4AWHbZIuwJEgjVhpzyc"

  def self.encode(id)
    length = ALLOWED_CHARS.length

    while id > length -1
      hash = ALLOWED_CHARS[id % length,1].concat( hash || "" )
      id = (id / length).floor
    end

    ALLOWED_CHARS[id,1].concat(hash || "")
  end

  def self.decode(hash)
    length = ALLOWED_CHARS.length
    size = hash.length - 1
    array = hash.split('')
    id = ALLOWED_CHARS.index(array.pop)
    i = 0
    array.each do |c| 
      id += ALLOWED_CHARS.index(c) * (length ** (size - i))
      i += 1
    end
    id
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simple-hasher-0.0.2 lib/simplehasher.rb