Current section

Files

Jump to
base62_uuid lib base62_uuid.ex
Raw

lib/base62_uuid.ex

defmodule Base62UUID do
@moduledoc """
A base 62-encoded v4 UUID.
"""
@length 22
def generate do
UUID.uuid4 |> encode
end
defp encode(uuid) do
uuid
|> String.replace("-", "")
|> String.to_integer(16)
|> Base62.encode
|> ensure_length
end
defp ensure_length(encoded) when byte_size(encoded) == @length, do: encoded
defp ensure_length(encoded) do
difference = @length - String.length(encoded)
String.duplicate("0", difference) <> encoded
end
end