UNPKG

@texting/string-value

Version:

Get quasi pseudo value of a string

30 lines (21 loc) 1.31 kB
'use strict'; 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;