Puid.Chars (puid v2.3.2)
Pre-defined character sets for use when creating Puid
modules.
Example
iex> defmodule(AlphanumId, do: use(Puid, chars: :alphanum))
Pre-defined Chars
:alpha
Upper/lower case alphabet
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
bits per character: 5.7
:alpha_lower
Lower case alphabet
abcdefghijklmnopqrstuvwxyz
bits per character: 4.7
:alpha_upper
Upper case alphabet
ABCDEFGHIJKLMNOPQRSTUVWXYZ
bits per character: 4.7
:alphanum
Upper/lower case alphabet and numbers
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
bits per character: 5.95
:alphanum_lower
Lower case alphabet and numbers
abcdefghijklmnopqrstuvwxyz0123456789
bits per character: 5.17
:alphanum_upper
Upper case alphabet and numbers
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
bits per character: 5.17
:base16
RFC 4648 base16 character set
0123456789ABCDEF
bits per character: 4
:base32
RFC 4648 base32 character set
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
bits per character: 5
:base32_hex
RFC 4648 base32 extended hex character set with lowercase letters
0123456789abcdefghijklmnopqrstuv
bits per character: 5
:base32_hex_upper
RFC 4648 base32 extended hex character set
0123456789ABCDEFGHIJKLMNOPQRSTUV
bits per character: 5
:crockford32
0123456789ABCDEFGHJKMNPQRSTVWXYZ
:decimal
Decimal digits
0123456789
bits per character: 3.32
:hex
Lowercase hexadecimal
0123456789abcdef
bits per character: 4
:hex_upper
Uppercase hexadecimal
0123456789ABCDEF
bits per character: 4
:safe_ascii
ASCII characters from ?!
to ?~
, minus backslash, backtick, single-quote and double-quote
`!#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_bcdefghijklmnopqrstuvwxyz{|}~`
bits per character: 6.49
:safe32
Strings that don't look like English words and are easier to parse visually
2346789bdfghjmnpqrtBDFGHJLMNPQRT
- remove all upper and lower case vowels (including y)
- remove all numbers that look like letters
- remove all letters that look like numbers
- remove all letters that have poor distinction between upper and lower case values
bits per character: 6.49
:safe64
RFC 4648 file system and URL safe character set
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_
bits per character: 6
:symbol
:safe_ascii characters not in :alphanum
`!#$%&()*+,-./:;<=>?@[]^_{|}~`
bits per character: 4.81
:wordSafe32
Strings that don't look like English words
23456789CFGHJMPQRVWXcfghjmpqrvwx
Origin unknown
bits per character: 6.49
Summary
Types
Chars can be designated by a pre-defined atom, a binary or a charlist
Character encoding scheme. :ascii
encoding uses cross-product character pairs.
Functions
charlist
for a pre-defined Puid.Chars
, a String.t() or a charlist.
Same as charlist/1
but either returns charlist or raises a Puid.Error
Types
Functions
@spec charlist(puid_chars()) :: {:ok, charlist()} | Puid.Error.t()
charlist
for a pre-defined Puid.Chars
, a String.t() or a charlist.
The characters for either String.t() or charlist types must be unique, have more than one character, and not be invalid ascii.
Example
iex> Puid.Chars.charlist(:safe32)
{:ok, ~c"2346789bdfghjmnpqrtBDFGHJLMNPQRT"}
iex> Puid.Chars.charlist("dingosky")
{:ok, ~c"dingosky"}
iex> Puid.Chars.charlist("unique")
{:error, "Characters not unique"}
@spec charlist!(puid_chars()) :: charlist() | Puid.Error.t()
Same as charlist/1
but either returns charlist or raises a Puid.Error
Example
iex> Puid.Chars.charlist!(:safe32)
~c"2346789bdfghjmnpqrtBDFGHJLMNPQRT"
iex> Puid.Chars.charlist!("dingosky")
~c"dingosky"
iex> Puid.Chars.charlist!("unique")
# (Puid.Error) Characters not unique