UNPKG

runelib

Version:

runestones encode and decode

38 lines (37 loc) 1.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeSpacers = exports.getSpacersVal = exports.applySpacers = void 0; function applySpacers(str, spacers) { let res = ''; for (let i = 0; i < str.length; i++) { res += str.charAt(i); if (spacers > 0) { // Get the least significant bit let bit = spacers & 1; if (bit === 1) { res += '•'; } // Right shift the number to process the next bit spacers >>= 1; } } return res; } exports.applySpacers = applySpacers; function getSpacersVal(str) { let res = 0; let spacersCnt = 0; for (let i = 0; i < str.length; i++) { const char = str.charAt(i); if (char === '•') { res += 1 << (i - 1 - spacersCnt); spacersCnt++; } } return res; } exports.getSpacersVal = getSpacersVal; function removeSpacers(rune) { return rune.replace(/[•]+/g, ""); } exports.removeSpacers = removeSpacers;