Add the following code to your project's shard.yml under:
to use in production
- OR -
development_dependencies to use in development
Crystal shard for Base62 encoding/decoding. It's especially useful for converting data into shortened strings suitable for URL shortening and/or obfuscating auto-incrementing resource ids from being exposed through RESTful APIs.
Base62 encoding converts numbers to ASCII strings (0-9, a-z and A-Z) and vice versa, which typically results in comparatively short strings. Such identifiers also tend to be more readily identifiable by humans.
Add this to your application's
dependencies: base62: github: Sija/base62.cr
require "base62" Base62.encode(999) # => "G7" Base62.decode("G7") # => 999
This uses the default ASCII character set for encoding/decoding.
It's also possible to define a custom character set instead:
charset = "~9876543210ABCDEFGHIJKLMNOPQRSTU$#@%!abcdefghijklmnopqrstuvw-=" Base62.encode(999, charset) # => "F3" Base62.decode("F3", charset) # => 999
charset typically expects the respective string to contain
exactly 62 unique character. In fact, it's also possible to use characters
sets with more than 62 characters in order to achieve shorter identifiers
for large numbers.
git checkout -b my-new-feature)
git commit -am 'Add some feature')
git push origin my-new-feature)