@texting/string-value
Version:
Get quasi pseudo value of a string
30 lines (21 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var enumDataTypes = require('@typen/enum-data-types');
const v1 = word => (word.toLowerCase().charCodeAt(0) & 0x7f) << 21;
const v2 = word => (((word = word.toLowerCase()).charCodeAt(0) & 0x7f) << 21) + ((word.charCodeAt(1) & 0x7f) << 14);
const v3 = word => (((word = word.toLowerCase()).charCodeAt(0) & 0x7f) << 21) + ((word.charCodeAt(1) & 0x7f) << 14) + ((word.charCodeAt(2) & 0x7f) << 7);
const v4 = word => (((word = word.toLowerCase()).charCodeAt(0) & 0x7f) << 21) + ((word.charCodeAt(1) & 0x7f) << 14) + ((word.charCodeAt(2) & 0x7f) << 7) + (word.charCodeAt(3) & 0x7f);
const stringValue = word => {
const l = word === null || word === void 0 ? void 0 : word.length;
if (!l) return NaN;
if (typeof word !== enumDataTypes.STR) return NaN;
if (l >= 8) return (v4(word.slice(0, 4)) << 2) + v4(word.slice(-4));
if (l === 7) return (v4(word.slice(0, 4)) << 2) + v3(word.slice(-3));
if (l === 6) return (v4(word.slice(0, 4)) << 2) + v2(word.slice(-2));
if (l === 5) return (v4(word.slice(0, 4)) << 2) + v1(word.slice(-1));
if (l === 4) return v4(word) << 2;
if (l === 3) return v3(word) << 2;
if (l === 2) return v2(word) << 2;
if (l === 1) return v1(word) << 2;
};
exports.stringValue = stringValue;