-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemojify.js
34 lines (30 loc) · 8.87 KB
/
emojify.js
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
/** @module emojify-hashes */
/**
* A predefined Array of unicode emojis
*/
export const emojiArray = [
'⌚', '⌨', '⏏', '⏯', '⏰', '⏱', '⏳', '☀', '☂', '☄', '☎', '☑', '☔', '☘', '☝', '☠', '☢', '☮', '☯', '♀', '♂', '♟', '♠', '♣', '♥', '♨', '♻', '♾', '♿', '⚒', '⚓', '⚔', '⚕', '⚖', '⚙', '⚛', '⚠', '⚧', '⚪', '⚰', '⚽', '⛄', '⛈', '⛏', '⛑', '⛓', '⛔', '⛩', '⛪', '⛰', '⛲', '⛴', '⛵', '⛷', '⛸', '⛺', '⛽', '✂', '✅', '✈', '✉', '✊', '✋', '✍', '✏', '✒', '✔', '✖', '❗', '❣', '❤', '⭐', '⭕', '🀄', '🃏', '🌀', '🌁', '🌂', '🌃', '🌄', '🌅', '🌆', '🌇', '🌈', '🌉', '🌊', '🌋', '🌍', '🌐', '🌑', '🌓', '🌕', '🌙', '🌚', '🌛', '🌝', '🌟', '🌡', '🌭', '🌮', '🌰', '🌲', '🌴', '🌶', '🌷', '🌸', '🌹', '🌺', '🌻', '🌼', '🌽', '🌾', '🌿', '🍀', '🍁', '🍂', '🍃', '🍄', '🍅', '🍆', '🍇', '🍈', '🍉', '🍋', '🍌', '🍍', '🍎', '🍐', '🍑', '🍒', '🍓', '🍔', '🍕', '🍖', '🍗', '🍘', '🍙', '🍚', '🍛', '🍜', '🍝', '🍞', '🍟', '🍠', '🍡', '🍢', '🍣', '🍤', '🍥', '🍦', '🍧', '🍨', '🍩', '🍪', '🍫', '🍬', '🍭', '🍮', '🍯', '🍰', '🍱', '🍲', '🍳', '🍴', '🍵', '🍶', '🍷', '🍸', '🍹', '🍺', '🍼', '🍽', '🍾', '🎀', '🎁', '🎂', '🎃', '🎄', '🎅', '🎆', '🎇', '🎈', '🎉', '🎊', '🎋', '🎌', '🎍', '🎎', '🎏', '🎐', '🎑', '🎒', '🎖', '🎙', '🎚', '🎞', '🎠', '🎡', '🎢', '🎣', '🎤', '🎥', '🎦', '🎧', '🎨', '🎩', '🎪', '🎫', '🎬', '🎭', '🎮', '🎯', '🎰', '🎱', '🎲', '🎳', '🎴', '🎵', '🎶', '🎷', '🎸', '🎹', '🎺', '🎻', '🎼', '🎽', '🎾', '🎿', '🏀', '🏁', '🏂', '🏃', '🏅', '🏆', '🏇', '🏈', '🏉', '🏊', '🏋', '🏌', '🏍', '🏏', '🏐', '🏑', '🏒', '🏔', '🏕', '🏖', '🏗', '🏘', '🏙', '🏚', '🏛', '🏜', '🏝', '🏞', '🏠', '🏡', '🏢', '🏤', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🏳', '🏴', '🏵', '🏷', '🏸', '🏹', '🏺', '🏻', '🏼', '🏽', '🏾', '🏿', '🐀', '🐁', '🐂', '🐃', '🐄', '🐅', '🐆', '🐈', '🐉', '🐊', '🐌', '🐍', '🐏', '🐑', '🐓', '🐔', '🐕', '🐖', '🐗', '🐘', '🐙', '🐚', '🐛', '🐜', '🐝', '🐞', '🐟', '🐠', '🐡', '🐢', '🐣', '🐤', '🐥', '🐦', '🐧', '🐨', '🐪', '🐫', '🐬', '🐭', '🐮', '🐯', '🐰', '🐱', '🐲', '🐳', '🐴', '🐵', '🐶', '🐷', '🐸', '🐹', '🐺', '🐻', '🐼', '🐽', '🐿', '👀', '👁', '👂', '👃', '👄', '👅', '👆', '👇', '👈', '👉', '👊', '👋', '👌', '👍', '👎', '👏', '👐', '👑', '👒', '👓', '👔', '👕', '👖', '👗', '👘', '👙', '👚', '👛', '👜', '👝', '👞', '👟', '👠', '👡', '👢', '👣', '👥', '👦', '👧', '👨', '👩', '👪', '👬', '👮', '👯', '👰', '👱', '👲', '👳', '👴', '👵', '👶', '👷', '👸', '👹', '👺', '👻', '👼', '👽', '👾', '👿', '💀', '💁', '💂', '💃', '💄', '💅', '💆', '💇', '💈', '💉', '💊', '💋', '💌', '💍', '💎', '💏', '💐', '💑', '💒', '💓', '💔', '💕', '💖', '💗', '💘', '💙', '💚', '💛', '💜', '💝', '💞', '💟', '💠', '💡', '💢', '💣', '💤', '💥', '💦', '💧', '💨', '💩', '💪', '💫', '💭', '💮', '💯', '💰', '💱', '💲', '💳', '💴', '💶', '💸', '💹', '💺', '💻', '💼', '💽', '💾', '💿', '📀', '📁', '📂', '📃', '📄', '📅', '📆', '📇', '📈', '📉', '📊', '📋', '📌', '📍', '📎', '📏', '📐', '📑', '📒', '📓', '📔', '📕', '📖', '📗', '📘', '📙', '📚', '📛', '📜', '📝', '📞', '📟', '📠', '📡', '📢', '📣', '📤', '📥', '📦', '📧', '📨', '📩', '📪', '📬', '📮', '📯', '📰', '📱', '📲', '📳', '📵', '📶', '📸', '📹', '📺', '📻', '📽', '📿', '🔀', '🔁', '🔃', '🔄', '🔅', '🔆', '🔈', '🔉', '🔊', '🔋', '🔌', '🔍', '🔎', '🔏', '🔐', '🔑', '🔒', '🔓', '🔕', '🔖', '🔗', '🔘', '🔙', '🔚', '🔛', '🔜', '🔝', '🔞', '🔟', '🔠', '🔡', '🔢', '🔣', '🔤', '🔥', '🔦', '🔧', '🔨', '🔩', '🔪', '🔬', '🔮', '🔯', '🔰', '🔱', '🔲', '🔳', '🔴', '🔵', '🔶', '🔷', '🔸', '🔹', '🔺', '🔻', '🔼', '🕉', '🕋', '🕌', '🕍', '🕐', '🕯', '🕳', '🕴', '🕵', '🕶', '🕷', '🕸', '🕺', '🖇', '🖊', '🖋', '🖌', '🖐', '🖕', '🖤', '🖥', '🖨', '🖱', '🖼', '🗂', '🗃', '🗑', '🗒', '🗜', '🗝', '🗡', '🗣', '🗨', '🗯', '🗳', '🗺', '🗻', '🗼', '🗽', '🗾', '😀', '😁', '😂', '😃', '😄', '😅', '😇', '😉', '😊', '😋', '😌', '😎', '😏', '😐', '😑', '😒', '😓', '😕', '😖', '😗', '😘', '😙', '😚', '😛', '😜', '😝', '😟', '😠', '😡', '😢', '😣', '😤', '😦', '😨', '😩', '😪', '😬', '😭', '😮', '😰', '😱', '😲', '😴', '😵', '😶', '😷', '😸', '😹', '😺', '😻', '😼', '😽', '😾', '😿', '🙁', '🙂', '🙃', '🙅', '🙆', '🙇', '🙈', '🙉', '🙊', '🙋', '🙌', '🙍', '🙎', '🚀', '🚁', '🚃', '🚄', '🚆', '🚇', '🚈', '🚉', '🚊', '🚌', '🚍', '🚎', '🚏', '🚐', '🚑', '🚒', '🚔', '🚕', '🚖', '🚗', '🚘', '🚙', '🚛', '🚜', '🚝', '🚞', '🚟', '🚠', '🚢', '🚣', '🚤', '🚦', '🚧', '🚨', '🚩', '🚪', '🚫', '🚬', '🚮', '🚯', '🚰', '🚲', '🚳', '🚴', '🚶', '🚷', '🚹', '🚺', '🚻', '🚼', '🚽', '🚿', '🛀', '🛁', '🛂', '🛃', '🛄', '🛋', '🛌', '🛍', '🛎', '🛐', '🛑', '🛕', '🛖', '🛠', '🛡', '🛢', '🛣', '🛤', '🛩', '🛫', '🛰', '🛳', '🛴', '🛵', '🛷', '🛹', '🛺', '🛻', '🟠', '🟡', '🟢', '🟣', '🟤', '🤌', '🤍', '🤎', '🤐', '🤑', '🤒', '🤓', '🤔', '🤕', '🤖', '🤗', '🤙', '🤚', '🤛', '🤜', '🤝', '🤟', '🤠', '🤡', '🤢', '🤣', '🤤', '🤥', '🤦', '🤨', '🤩', '🤪', '🤫', '🤬', '🤭', '🤮', '🤰', '🤱', '🤳', '🤴', '🤵', '🤶', '🤷', '🤸', '🤹', '🤼', '🤽', '🤿', '🥀', '🥁', '🥂', '🥃', '🥄', '🥇', '🥈', '🥉', '🥊', '🥌', '🥍', '🥎', '🥐', '🥑', '🥒', '🥓', '🥔', '🥕', '🥖', '🥗', '🥘', '🥙', '🥚', '🥛', '🥜', '🥝', '🥟', '🥠', '🥡', '🥢', '🥣', '🥤', '🥥', '🥦', '🥧', '🥨', '🥩', '🥪', '🥬', '🥭', '🥮', '🥯', '🥱', '🥲', '🥳', '🥴', '🥵', '🥷', '🥺', '🥻', '🥼', '🥽', '🥾', '🦀', '🦁', '🦂', '🦃', '🦅', '🦆', '🦇', '🦈', '🦉', '🦊', '🦋', '🦌', '🦍', '🦎', '🦏', '🦐', '🦒', '🦓', '🦔', '🦕', '🦖', '🦘', '🦙', '🦚', '🦛', '🦜', '🦝', '🦞', '🦟', '🦠', '🦡', '🦣', '🦥', '🦦', '🦧', '🦨', '🦩', '🦫', '🦬', '🦮', '🦰', '🦱', '🦲', '🦳', '🦴', '🦵', '🦶', '🦷', '🦸', '🦺', '🦻', '🦼', '🦽', '🦾', '🧀', '🧁', '🧃', '🧄', '🧅', '🧆', '🧇', '🧈', '🧉', '🧋', '🧍', '🧎', '🧐', '🧑', '🧒', '🧓', '🧔', '🧕', '🧖', '🧗', '🧘', '🧙', '🧚', '🧛', '🧜', '🧝', '🧞', '🧟', '🧠', '🧡', '🧢', '🧣', '🧤', '🧥', '🧧', '🧨', '🧩', '🧪', '🧫', '🧬', '🧭', '🧮', '🧯', '🧰', '🧱', '🧲', '🧳', '🧴', '🧵', '🧶', '🧷', '🧸', '🧹', '🧺', '🧻', '🧼', '🧽', '🧾', '🩰', '🩱', '🩲', '🩴', '🩸', '🩹', '🪀', '🪁', '🪃', '🪄', '🪅', '🪐', '🪑', '🪒', '🪓', '🪔', '🪖', '🪗', '🪘', '🪙', '🪚', '🪛', '🪜', '🪝', '🪞', '🪟', '🪠', '🪡', '🪢', '🪣', '🪤', '🪥', '🪦', '🪧', '🪰', '🪱', '🪲', '🪳', '🪴', '🪵', '🫀', '🫁', '🫐', '🫑', '🫒', '🫓', '🫔', '🫕'
]
/**
* Crates a visualisation of hashes using unicode emoji
*
* @param {string} hexString The hash to visualise
* @param {Array=} emojis The alphabet to encode the `hexString` in
* @returns {Array} An Array of 4 symbols (one-char Strings)
* @throws {RangeError} Will throw if the input is not hexadecimal
*/
export default function emojify (hexString, emojis = emojiArray) {
const hexRegEx = /^[0-9a-fA-F]+$/
const numEmojis = 4
const sliceSize = hexString.length / numEmojis
const result = []
if (!hexRegEx.test(hexString)) {
throw RangeError(`Input "${hexString}" is not hexadecimal.`)
}
for (let i = 0; i < numEmojis; i++) {
const startIndex = i * sliceSize
const part = hexString.slice(startIndex, startIndex + sliceSize)
result.push(emojis[BigInt('0x' + part) % BigInt(emojis.length)])
}
return result
}