UNPKG

@designliquido/delegua

Version:

Linguagem de programação simples e moderna usando português estruturado.

23 lines 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = cyrb53; /** * Função de geração de hashes copiada de https://stackoverflow.com/a/52171480/1314276. * A ideia é gerar _hashes_ únicos para nomes de arquivos importados e usar o _hash_ para os * pragmas de elementos catalogados pelo lexador e usados pelo interpretador. * @param {string} nomeArquivo Nome do arquivo * @param {number} semente Uma semente de dispersão, padrão: 0 * @returns {number} Número inteiro com o hash correspondente ao nome do arquivo */ function cyrb53(nomeArquivo, semente = 0) { let h1 = 0xdeadbeef ^ semente, h2 = 0x41c6ce57 ^ semente; for (let i = 0, ch; i < nomeArquivo.length; i++) { ch = nomeArquivo.charCodeAt(i); h1 = Math.imul(h1 ^ ch, 2654435761); h2 = Math.imul(h2 ^ ch, 1597334677); } h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909); h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909); return 4294967296 * (2097151 & h2) + (h1 >>> 0); } //# sourceMappingURL=cyrb53.js.map