UNPKG

@phensley/cldr-core

Version:
61 lines 1.93 kB
"use strict"; // Simple base-100 UTF-8-safe encoding of numbers. With 64-bit bitwise // operations we could do a variable-length encoding of numbers up to // Number.MAX_SAFE_INTEGER. Since JavaScript's bitwise operations only // support 32-bit numbers, we do this compromise. Object.defineProperty(exports, "__esModule", { value: true }); // The minus symbol is reserved to indicate negative numbers, and period is // reserved in case of future support of encoding floating point numbers. exports.ENCODE = '' + '!#$%&()*+,0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ' + '[]^_abcdefghijklmnopqrstuvwxyz{|}~¢£¥¦§©«±µ»¼½¾'; var DECODE = exports.ENCODE.split('').reduce(function (o, ch, i) { o[ch] = i; return o; }, {}); exports.base100encode = function (orig) { if (orig === 0) { return exports.ENCODE[0]; } var res = orig < 0 ? '-' : ''; var n = Math.abs(orig); while (n >= 100) { var i = n % 100; res += exports.ENCODE[i]; n = Math.floor(n / 100); } return n > 0 ? res + exports.ENCODE[n] : res; }; exports.base100decode = function (s) { var len = s.length; if (len === 0) { return 0; } var lim = s[0] === '-' ? 1 : 0; var n = 0; for (var i = s.length - 1; i >= lim; i--) { var ch = s[i]; n *= 100; n += DECODE[ch]; } return lim === 1 ? -n : n; }; exports.bitarrayCreate = function (bits) { var data = new Array((bits.length >>> 5) + 1); for (var i = 0; i < bits.length; i++) { var idx = i >>> 5; var bit = bits[i]; if (bit === 0) { data[idx] &= ~(1 << i); } else { data[idx] |= (1 << i); } } return data; }; exports.bitarrayGet = function (data, i) { var idx = i >>> 5; return idx < data.length ? ((data[idx] >>> (i % 32)) & 1) === 1 : false; }; //# sourceMappingURL=encoding.js.map