Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alco/hashids-elixir
Stringify your ids
https://github.com/alco/hashids-elixir
Last synced: 4 days ago
JSON representation
Stringify your ids
- Host: GitHub
- URL: https://github.com/alco/hashids-elixir
- Owner: alco
- License: mit
- Created: 2014-06-30T01:13:08.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-03-13T07:43:42.000Z (9 months ago)
- Last Synced: 2024-03-14T21:24:04.495Z (9 months ago)
- Language: Elixir
- Homepage:
- Size: 71.3 KB
- Stars: 274
- Watchers: 7
- Forks: 14
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - Hashids lets you obfuscate numerical identifiers via reversible mapping. (Text and Numbers)
- fucking-awesome-elixir - hashids - Hashids lets you obfuscate numerical identifiers via reversible mapping. (Text and Numbers)
- awesome-elixir - hashids - Hashids lets you obfuscate numerical identifiers via reversible mapping. (Text and Numbers)
README
Hashids
=======[![Module Version](https://img.shields.io/hexpm/v/hashids.svg)](https://hex.pm/packages/hashids)
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen.svg)](https://hexdocs.pm/hashids/)
[![Total Download](https://img.shields.io/hexpm/dt/hashids.svg)](https://hex.pm/packages/hashids)
[![License](https://img.shields.io/hexpm/l/hashids.svg)](https://github.com/alco/hashids-elixir/blob/master/LICENSE.md)
[![Last Updated](https://img.shields.io/github/last-commit/alco/hashids-elixir.svg)](https://github.com/alco/hashids/commits/master)Hashids lets you obfuscate numerical identifiers via reversible mapping.
This is a port of [Hashids][1] from JavaScript.
[1]: http://www.hashids.org/
## Installation
Add Hashids as a dependency to your Mix project:
```elixir
defp deps do
[
{:hashids, "~> 2.0"}
]
end
```## Usage
Hashids encodes a list of integers into a string (technically, iodata). Some of the encoding
parameters can be customized.```elixir
s = Hashids.new([
salt: "123", # using a custom salt helps producing unique cipher text
min_len: 2, # minimum length of the cipher text (1 by default)
])cipher1 = Hashids.encode(s, 129)
#=> "pE6"cipher2 = Hashids.encode(s, [1,2,3,4])
#=> "4bSwImsd"# decode() always returns a list of numbers
Hashids.decode(s, cipher1)
#=> {:ok, [129]}Hashids.decode!(s, cipher2)
#=> [1, 2, 3, 4]
```It is also possible to customize the character set used for the cipher text by
providing a custom alphabet. It has to be at least 16 characters long.```elixir
defmodule MyAccessToken do
@cyrillic_alphabet "123456789абвгґдеєжзиіїйклмнопрстуфцчшщьюяАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФЦЧШЩЬЮЯ"
@coder Hashids.new(alphabet: @cyrillic_alphabet)def encode(token_ids) do
Hashids.encode(@coder, token_ids)
enddef decode(data) do
Hashids.decode(@coder, data)
end
enddata = MyAccessToken.encode([1234, 786, 21, 0])
#=> "ЦфюєИНаЛ1И"MyAccessToken.decode(data)
#=> {:ok, [1234, 786, 21, 0]}
```## Migrating from 1.0
See the [changelog](./CHANGELOG.md).
## License
This software is licensed under [the MIT license](./LICENSE.md).