Sha256: f90d633ad1d4c5837857f8c9ba61228544410d86443c06a6d220caec2f7db77a

Contents?: true

Size: 621 Bytes

Versions: 1

Compression:

Stored size: 621 Bytes

Contents

class 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.4 lib/simplehasher.rb