初始化
This commit is contained in:
69
uni_modules/UniDevTools/node_modules/licia/vlq.js
generated
vendored
Normal file
69
uni_modules/UniDevTools/node_modules/licia/vlq.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
var toArr = require('./toArr');
|
||||
|
||||
exports = {
|
||||
encode: function(arr) {
|
||||
arr = toArr(arr);
|
||||
var ret = '';
|
||||
for (var i = 0, len = arr.length; i < len; i++) {
|
||||
ret += encode(arr[i]);
|
||||
}
|
||||
return ret;
|
||||
},
|
||||
decode: function(str) {
|
||||
var ret = [];
|
||||
var i = 0;
|
||||
var len = str.length;
|
||||
while (i < len) {
|
||||
var value = 0;
|
||||
var continuation = false;
|
||||
var shift = 0;
|
||||
do {
|
||||
var digit = charToInt[str[i++]];
|
||||
continuation = (digit & VLQ_CONTINUATION_BIT) !== 0;
|
||||
digit &= VLQ_BASE_MASK;
|
||||
value = value + (digit << shift);
|
||||
shift = shift + VLQ_BASE_SHIFT;
|
||||
} while (continuation);
|
||||
ret.push(fromVLQSigned(value));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
var charToInt = {};
|
||||
var intToChar = {};
|
||||
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
for (var i = 0, len = chars.length; i < len; i++) {
|
||||
charToInt[chars[i]] = i;
|
||||
intToChar[i] = chars[i];
|
||||
}
|
||||
var VLQ_BASE_SHIFT = 5;
|
||||
var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
|
||||
var VLQ_BASE_MASK = VLQ_BASE - 1;
|
||||
var VLQ_CONTINUATION_BIT = VLQ_BASE;
|
||||
function encode(value) {
|
||||
var ret = '';
|
||||
value = toVLQSigned(value);
|
||||
do {
|
||||
var digit = value & VLQ_BASE_MASK;
|
||||
value >>>= VLQ_BASE_SHIFT;
|
||||
if (value > 0) {
|
||||
digit |= VLQ_CONTINUATION_BIT;
|
||||
}
|
||||
ret += intToChar[digit];
|
||||
} while (value > 0);
|
||||
return ret;
|
||||
}
|
||||
function toVLQSigned(value) {
|
||||
if (value < 0) {
|
||||
return (-value << 1) + 1;
|
||||
} else {
|
||||
return (value << 1) + 0;
|
||||
}
|
||||
}
|
||||
function fromVLQSigned(value) {
|
||||
var negate = (value & 1) === 1;
|
||||
value = value >> 1;
|
||||
return negate ? -value : value;
|
||||
}
|
||||
|
||||
module.exports = exports;
|
||||
Reference in New Issue
Block a user