Skip to content

Commit 2e0dfa7

Browse files
committed
fix pbf code generation for enums
1 parent 448056c commit 2e0dfa7

3 files changed

Lines changed: 13 additions & 7 deletions

File tree

bench/vector_tile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
'use strict'; // code generated by pbf v2.0.1
1+
'use strict'; // code generated by pbf v3.2.1
22

33
// Tile ========================================
44

compile.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,18 @@ function writeMessage(ctx, options) {
8686
return code;
8787
}
8888

89+
function getEnumValues(ctx) {
90+
var enums = {};
91+
var ids = Object.keys(ctx._proto.values);
92+
for (var i = 0; i < ids.length; i++) {
93+
enums[ids[i]] = ctx._proto.values[ids[i]].value;
94+
}
95+
return enums;
96+
}
97+
8998
function writeEnum(ctx, options) {
9099
return '\n' + compileExport(ctx, options) + ' ' +
91-
JSON.stringify(ctx._proto.values, null, 4) + ';\n';
100+
JSON.stringify(getEnumValues(ctx), null, 4) + ';\n';
92101
}
93102

94103
function compileExport(ctx, options) {
@@ -373,7 +382,7 @@ function setPackedOption(ctx, field, syntax) {
373382
function setDefaultValue(ctx, field, syntax) {
374383
var options = field.options;
375384
var type = getType(ctx, field);
376-
var enumValues = type && type._proto.values;
385+
var enumValues = type && type._proto.values && getEnumValues(type);
377386

378387
// Proto3 does not support overriding defaults
379388
var explicitDefault = syntax < 3 ? options.default : undefined;

test/compile.test.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,7 @@ test('compiles defaults', function() {
115115

116116
assert.equal(buf.length, 0);
117117
assert.deepEqual(data, {
118-
type: {
119-
options: {},
120-
value: 1
121-
},
118+
type: 1,
122119
name: 'test',
123120
flag: true,
124121
weight: 1.5,

0 commit comments

Comments
 (0)