UNPKG

@whisklabs/grpc

Version:

gRPC generator and http library for typescript

69 lines 2.62 kB
"use strict"; 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