415gotit
This commit is contained in:
161
node_modules/msgpack-lite/lib/read-token.js
generated
vendored
Normal file
161
node_modules/msgpack-lite/lib/read-token.js
generated
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
// read-token.js
|
||||
|
||||
var ReadFormat = require("./read-format");
|
||||
|
||||
exports.getReadToken = getReadToken;
|
||||
|
||||
function getReadToken(options) {
|
||||
var format = ReadFormat.getReadFormat(options);
|
||||
|
||||
if (options && options.useraw) {
|
||||
return init_useraw(format);
|
||||
} else {
|
||||
return init_token(format);
|
||||
}
|
||||
}
|
||||
|
||||
function init_token(format) {
|
||||
var i;
|
||||
var token = new Array(256);
|
||||
|
||||
// positive fixint -- 0x00 - 0x7f
|
||||
for (i = 0x00; i <= 0x7f; i++) {
|
||||
token[i] = constant(i);
|
||||
}
|
||||
|
||||
// fixmap -- 0x80 - 0x8f
|
||||
for (i = 0x80; i <= 0x8f; i++) {
|
||||
token[i] = fix(i - 0x80, format.map);
|
||||
}
|
||||
|
||||
// fixarray -- 0x90 - 0x9f
|
||||
for (i = 0x90; i <= 0x9f; i++) {
|
||||
token[i] = fix(i - 0x90, format.array);
|
||||
}
|
||||
|
||||
// fixstr -- 0xa0 - 0xbf
|
||||
for (i = 0xa0; i <= 0xbf; i++) {
|
||||
token[i] = fix(i - 0xa0, format.str);
|
||||
}
|
||||
|
||||
// nil -- 0xc0
|
||||
token[0xc0] = constant(null);
|
||||
|
||||
// (never used) -- 0xc1
|
||||
token[0xc1] = null;
|
||||
|
||||
// false -- 0xc2
|
||||
// true -- 0xc3
|
||||
token[0xc2] = constant(false);
|
||||
token[0xc3] = constant(true);
|
||||
|
||||
// bin 8 -- 0xc4
|
||||
// bin 16 -- 0xc5
|
||||
// bin 32 -- 0xc6
|
||||
token[0xc4] = flex(format.uint8, format.bin);
|
||||
token[0xc5] = flex(format.uint16, format.bin);
|
||||
token[0xc6] = flex(format.uint32, format.bin);
|
||||
|
||||
// ext 8 -- 0xc7
|
||||
// ext 16 -- 0xc8
|
||||
// ext 32 -- 0xc9
|
||||
token[0xc7] = flex(format.uint8, format.ext);
|
||||
token[0xc8] = flex(format.uint16, format.ext);
|
||||
token[0xc9] = flex(format.uint32, format.ext);
|
||||
|
||||
// float 32 -- 0xca
|
||||
// float 64 -- 0xcb
|
||||
token[0xca] = format.float32;
|
||||
token[0xcb] = format.float64;
|
||||
|
||||
// uint 8 -- 0xcc
|
||||
// uint 16 -- 0xcd
|
||||
// uint 32 -- 0xce
|
||||
// uint 64 -- 0xcf
|
||||
token[0xcc] = format.uint8;
|
||||
token[0xcd] = format.uint16;
|
||||
token[0xce] = format.uint32;
|
||||
token[0xcf] = format.uint64;
|
||||
|
||||
// int 8 -- 0xd0
|
||||
// int 16 -- 0xd1
|
||||
// int 32 -- 0xd2
|
||||
// int 64 -- 0xd3
|
||||
token[0xd0] = format.int8;
|
||||
token[0xd1] = format.int16;
|
||||
token[0xd2] = format.int32;
|
||||
token[0xd3] = format.int64;
|
||||
|
||||
// fixext 1 -- 0xd4
|
||||
// fixext 2 -- 0xd5
|
||||
// fixext 4 -- 0xd6
|
||||
// fixext 8 -- 0xd7
|
||||
// fixext 16 -- 0xd8
|
||||
token[0xd4] = fix(1, format.ext);
|
||||
token[0xd5] = fix(2, format.ext);
|
||||
token[0xd6] = fix(4, format.ext);
|
||||
token[0xd7] = fix(8, format.ext);
|
||||
token[0xd8] = fix(16, format.ext);
|
||||
|
||||
// str 8 -- 0xd9
|
||||
// str 16 -- 0xda
|
||||
// str 32 -- 0xdb
|
||||
token[0xd9] = flex(format.uint8, format.str);
|
||||
token[0xda] = flex(format.uint16, format.str);
|
||||
token[0xdb] = flex(format.uint32, format.str);
|
||||
|
||||
// array 16 -- 0xdc
|
||||
// array 32 -- 0xdd
|
||||
token[0xdc] = flex(format.uint16, format.array);
|
||||
token[0xdd] = flex(format.uint32, format.array);
|
||||
|
||||
// map 16 -- 0xde
|
||||
// map 32 -- 0xdf
|
||||
token[0xde] = flex(format.uint16, format.map);
|
||||
token[0xdf] = flex(format.uint32, format.map);
|
||||
|
||||
// negative fixint -- 0xe0 - 0xff
|
||||
for (i = 0xe0; i <= 0xff; i++) {
|
||||
token[i] = constant(i - 0x100);
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
function init_useraw(format) {
|
||||
var i;
|
||||
var token = init_token(format).slice();
|
||||
|
||||
// raw 8 -- 0xd9
|
||||
// raw 16 -- 0xda
|
||||
// raw 32 -- 0xdb
|
||||
token[0xd9] = token[0xc4];
|
||||
token[0xda] = token[0xc5];
|
||||
token[0xdb] = token[0xc6];
|
||||
|
||||
// fixraw -- 0xa0 - 0xbf
|
||||
for (i = 0xa0; i <= 0xbf; i++) {
|
||||
token[i] = fix(i - 0xa0, format.bin);
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
function constant(value) {
|
||||
return function() {
|
||||
return value;
|
||||
};
|
||||
}
|
||||
|
||||
function flex(lenFunc, decodeFunc) {
|
||||
return function(decoder) {
|
||||
var len = lenFunc(decoder);
|
||||
return decodeFunc(decoder, len);
|
||||
};
|
||||
}
|
||||
|
||||
function fix(len, method) {
|
||||
return function(decoder) {
|
||||
return method(decoder, len);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user