diff --git a/src/generate-avro.js b/src/generate-avro.js index 4015224..bb63bdb 100644 --- a/src/generate-avro.js +++ b/src/generate-avro.js @@ -375,40 +375,32 @@ module.exports = function() { doc: doc || contents.description || '', }; - if (contents.hasOwnProperty('$ref')) { - if (valid) { - enumProp.type = 'enum'; - enumProp.symbols = contents.enum; + if (valid) { + var enumName = contents.id || `${name}${jsonSchemaAvro._enumSuffix}`; + if(enums[enumName] && sameArray(contents.enum, enums[enumName])) { + enumProp.type = enumName; } else { - enumProp.type = 'string'; - } - } else { - if (valid) { - var enumName = `${name}${jsonSchemaAvro._enumSuffix}`; - if(enums[enumName] && sameArray(contents.enum, enums[enumName])) { - enumProp.type = enumName; - } else { - if(enums[enumName]) { - var num = enumName.replace(/[^\d.]/g, ''); - num = num + 1; - if(num > 1) { - var reg = new RegExp(num); - enumName = enumName.replace(reg, newVal); - } else { - enumName = enumName+"_1"; - } - } - enumProp.type = { - type: 'enum', - name: enumName, - symbols: contents.enum + if(enums[enumName]) { + var num = enumName.replace(/[^\d.]/g, ''); + num = num + 1; + if(num > 1) { + var reg = new RegExp(num); + enumName = enumName.replace(reg, newVal); + } else { + enumName = enumName+"_1"; } - enums[enumName] = contents.enum; } - } else { - enumProp.type = "string" + enumProp.type = { + type: 'enum', + name: enumName, + symbols: contents.enum + } + enums[enumName] = contents.enum; } + } else { + enumProp.type = "string" } + if(enumProp.type != "string") { enumProp.type = [ enumProp.type, 'string' ] }