@whisklabs/grpc
Version:
gRPC generator and http library for typescript
69 lines • 2.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ParseEnums = exports.EnumVal = void 0;
var comment_1 = require("../comment");
var thrower_1 = require("../thrower");
var utils_1 = require("../utils");
var validators_1 = require("../validators");
var options_1 = require("./options");
var reserved_1 = require("./reserved");
function EnumVal(tokens) {
var results = (0, utils_1.check)({
type: 'enum value',
tokens: tokens.slice(0, 4).concat(tokens[tokens.indexOf(';')]),
rules: [(0, utils_1.ch)(validators_1.isText, { result: true }), (0, utils_1.ch)('='), (0, utils_1.ch)(validators_1.isNumber, { result: true }), (0, utils_1.ch)([';', '[']), (0, utils_1.ch)([';'])],
}).results;
(0, utils_1.cut)(tokens, 3);
var options = tokens[0] === '[' ? (0, options_1.InnerOptions)(tokens) : {};
(0, utils_1.cut)(tokens, 1);
return {
name: results[0],
value: {
value: Number(results[1]),
options: options,
},
};
}
exports.EnumVal = EnumVal;
function ParseEnums(tokens) {
var results = (0, utils_1.check)({
type: 'enum',
tokens: tokens.slice(0, 3).concat(tokens[tokens.indexOf('}')]),
rules: [(0, utils_1.ch)('enum'), (0, utils_1.ch)(validators_1.isText, { result: true }), (0, utils_1.ch)('{'), (0, utils_1.ch)('}')],
}).results;
var en = {
name: results[0],
values: {},
options: {},
reserved: [],
};
(0, comment_1.writeComment)(en);
(0, utils_1.cut)(tokens, 3);
while (tokens.length > 0) {
switch ((0, comment_1.next)(tokens)) {
case '}':
(0, utils_1.cut)(tokens, 1);
(0, utils_1.semicolon)(tokens);
(0, comment_1.writeComment)(en);
return en;
case 'option': {
var _a = (0, options_1.ParseOptions)(tokens), field = _a.field, value = _a.value;
(0, utils_1.insertOption)(en.options, field, value);
break;
}
case 'reserved':
en.reserved.push((0, reserved_1.ParseReserved)(tokens));
break;
case undefined:
continue;
default: {
var _b = EnumVal(tokens), name_1 = _b.name, value = _b.value;
en.values[name_1] = value;
(0, comment_1.writeComment)(en.values[name_1]);
}
}
}
throw new thrower_1.Thrower('enum', [['no close tag "}"', 0]]);
}
exports.ParseEnums = ParseEnums;
//# sourceMappingURL=enums.js.map