EmojiHash

Lightweight, zero-dependency library for hash-generation in emoji style 🍌

Version npm License: MIT PRs Welcome Minsize

Table of Contents

Installation

You can install emoji-hash-gen using standard tools:

$> npm install emoji-hash-gen
# or
$> yarn add emoji-hash-gen

Usage

import { getHash } from 'emoji-hash-gen';

getHash('Hello, world'); // "🥳🤫🦁"
getHash('https://github.com/opa-oz/emoji-hash'); // "💥3️⃣🕕🕠🔇🈺"
getHash('@gahara'); // "✨🎸🍭❔🕕"

// You can restrct an amount of emojies in the hash
const longText = 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book';
getHash(longText, { length: 5 }) // "💥🔻🈲🈵😺"

Hash-function is fully deterministic - you will get the same result with the same set of input data:

import { getHash } from 'emoji-hash-gen';

getHash('@gahara') === getHash('@gahara'); // true
getHash('@gahara') === getHash('gahara'); // false

API

getHash

Description: Generates random hash from input string.

Interface:

getHash(input: string, options?: Options): string;

getBitwise

Description: Generates random integer, based on input string. Source

Interface:

getBitwise(str: string): number;

transformBinary

Description: A function used by getHash. Requires integer as input and generates an emoji-hash based on it

Interface:

transformBinary(input: number, options?: Options): string;

useTable

Description: Original library uses pre-generated table [number]: emoji, which used for hash-generation. useTable provides possibility to override the default table.

Interface:

useTable(newTable: EmojiTable): void;

Table

Description: Default table contains 62 literals, generated from:

| a-z | 26 |
| A-Z | 26 |
| 0-9 | 10 |

Re-generate:

$> yarn generate-table

Current table:

// 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
{  
  0: '💥',  
  1: '',  
  2: '⛔️',  
  3: '👹',  
  4: '👌',  
  5: '🐞',  
  6: '🛄',  
  7: '👾',  
  8: '🈶',  
  9: '🈲',  
  10: '🐗',  
  11: '🔝',  
  12: '👝',  
  13: '🍖',  
  14: '🌍',  
  15: '😜',  
  16: '😍',  
  17: '🍭',  
  18: '🔇',  
  19: '',  
  20: '📌',  
  21: '👆',  
  22: '🎬',  
  23: '👵',  
  24: '🔻',  
  25: '🈵',  
  26: '🍘',  
  27: '🌂',  
  28: '💭',  
  29: '🎸',  
  30: '😺',  
  31: '🚎',  
  32: '🚛',  
  33: '🐥',  
  34: '🈺',  
  35: '🐂',  
  36: '🚴',  
  37: '✔️',  
  38: '🈹',  
  39: '📗',  
  40: '🕠',  
  41: '👯',  
  42: '3️⃣',  
  43: '💶',  
  44: '🐫',  
  45: '🇯🇵',  
  46: '👮',  
  47: '🏯',  
  48: '👏',  
  49: '📍',  
  50: '🔅',  
  51: '🐯',  
  52: '🕕',  
  53: '😁',  
  54: '🏬',  
  55: '🔍',  
  56: '🚺',  
  57: '🗾',  
  58: '🎯',  
  59: '4️⃣',  
  60: '🕘',  
  61: '🎅'  
}

Contributing

Please, use PRs for your proposals.

Setting up local development

For start, just clone repo and install dependencies via npm/yarn:

$> git clone https://github.com/opa-oz/emoji-hash.git
$> yarn install
# or
$> npm install

Tests

To run test, simply use command:

$> yarn test
#or
$> npm run test

Lint & Prettier

Easy to check code style and formatting:

$> yarn lint && yarn prettier-format

License

emoji-hash-gen is copyright © 2020 opa_oz. It is free software and may be redistributed under the terms specified in the license.