1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | function generateEnum(cSharpEnum) {
|
4 | 'use strict';
|
5 | var nextIndex = 0;
|
6 | var entryStrings = [];
|
7 | for (var _i = 0, _a = cSharpEnum.entries; _i < _a.length; _i++) {
|
8 | var entry = _a[_i];
|
9 | var value = !!entry.value ? parseEnumValue(entry.value, cSharpEnum.entries) : undefined;
|
10 | entryStrings.push(entry.name + " = " + (value !== undefined ? value : nextIndex));
|
11 | nextIndex = isNaN(value) ? nextIndex + 1 : value + 1;
|
12 | }
|
13 | return "export enum " + cSharpEnum.name + " {\n " + entryStrings.join(',\n ') + "\n}";
|
14 | }
|
15 | exports.generateEnum = generateEnum;
|
16 | function parseEnumValue(value, entries) {
|
17 | var parsedValue;
|
18 | if (value.startsWith('~')) {
|
19 | var valueNoTilde_1 = value.substr(1);
|
20 | var matchingEntry = entries.find(function (e) { return e.name === valueNoTilde_1; });
|
21 |
|
22 | parsedValue = matchingEntry ? ~parseEnumValue(matchingEntry.value, entries) : ~parseAsDecimalOrHexadecimal(valueNoTilde_1);
|
23 | }
|
24 | else {
|
25 | parsedValue = parseAsDecimalOrHexadecimal(value);
|
26 | }
|
27 | return parsedValue;
|
28 | }
|
29 | function parseAsDecimalOrHexadecimal(value) {
|
30 | var radix = value.startsWith('0x') ? 16 : 10;
|
31 | return parseInt(value, radix);
|
32 | }
|
33 |
|
\ | No newline at end of file |