| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
- (factory((global.vlq = global.vlq || {})));
- }(this, (function (exports) { 'use strict';
- var charToInteger = {};
- var integerToChar = {};
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split( '' ).forEach( function ( char, i ) {
- charToInteger[ char ] = i;
- integerToChar[ i ] = char;
- });
- function decode ( string ) {
- var result = [];
- var shift = 0;
- var value = 0;
- for ( var i = 0; i < string.length; i += 1 ) {
- var integer = charToInteger[ string[i] ];
- if ( integer === undefined ) {
- throw new Error( 'Invalid character (' + string[i] + ')' );
- }
- var hasContinuationBit = integer & 32;
- integer &= 31;
- value += integer << shift;
- if ( hasContinuationBit ) {
- shift += 5;
- } else {
- var shouldNegate = value & 1;
- value >>= 1;
- result.push( shouldNegate ? -value : value );
- // reset
- value = shift = 0;
- }
- }
- return result;
- }
- function encode ( value ) {
- var result;
- if ( typeof value === 'number' ) {
- result = encodeInteger( value );
- } else {
- result = '';
- for ( var i = 0; i < value.length; i += 1 ) {
- result += encodeInteger( value[i] );
- }
- }
- return result;
- }
- function encodeInteger ( num ) {
- var result = '';
- if ( num < 0 ) {
- num = ( -num << 1 ) | 1;
- } else {
- num <<= 1;
- }
- do {
- var clamped = num & 31;
- num >>= 5;
- if ( num > 0 ) {
- clamped |= 32;
- }
- result += integerToChar[ clamped ];
- } while ( num > 0 );
- return result;
- }
- exports.decode = decode;
- exports.encode = encode;
- Object.defineProperty(exports, '__esModule', { value: true });
- })));
|