@whisklabs/grpc
Version:
gRPC generator and http library for typescript
51 lines • 1.75 kB
JavaScript
import { next } from '../comment';
import { Thrower } from '../thrower';
import { ch, check, cut, cutStr } from '../utils';
import { isNumber, isText } from '../validators';
export function ParseReservedItem(tokens) {
var _a = check({
tokens: tokens,
rules: [ch(isNumber, { result: true }), ch('to'), ch(['max', isNumber], { result: true })],
}), results = _a.results, len = _a.len, errors = _a.errors;
if (errors.length === 0) {
cut(tokens, len);
var from = Number(results[0]);
var to = results[1] === 'max' ? 0x1fffffff : Number(results[1]);
return { from: from, to: to };
}
else {
var inner = check({
tokens: tokens,
rules: [ch([isNumber, isText], { result: true })],
});
if (inner.errors.length === 0) {
cut(tokens, inner.len);
var res = inner.results[0];
return isNumber(res) ? Number(res) : cutStr(res);
}
else {
throw new Thrower('reserved', errors.concat(inner.errors));
}
}
}
export function ParseReserved(tokens) {
var reserved = [];
while (tokens.length > 0) {
switch (next(tokens)) {
case 'reserved':
case ',':
cut(tokens, 1);
reserved.push(ParseReservedItem(tokens));
break;
case ';':
cut(tokens, 1);
return reserved;
case undefined:
continue;
default:
throw new Thrower('reserved', [["Unexpected token \"".concat(tokens[0], "\""), 0]]);
}
}
throw new Thrower('reserved', [['no close tag ";"', 0]]);
}
//# sourceMappingURL=reserved.js.map