runelib
Version:
runestones encode and decode
38 lines (37 loc) • 1.06 kB
JavaScript
;
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;