Merge pull request #832 from quicktype/no-number-enums

Don't make an enum if all cases are number strings
This commit is contained in:
David Siegel 2018-04-27 16:10:02 -07:00 коммит произвёл GitHub
Родитель a975119ae8 067de490fe
Коммит a7cbe345eb
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 2 добавлений и 1 удалений

Просмотреть файл

@ -16,8 +16,9 @@ function shouldBeEnum(t: StringType): OrderedMap<string, number> | undefined {
const enumCases = t.enumCases;
if (enumCases !== undefined) {
assert(enumCases.size > 0, "How did we end up with zero enum cases?");
const someCaseIsNotNumber = enumCases.keySeq().some(key => /^(\-|\+)?[0-9]+(\.[0-9]+)?$/.test(key) === false);
const numValues = enumCases.map(n => n).reduce<number>((a, b) => a + b);
if (numValues >= MIN_LENGTH_FOR_ENUM && enumCases.size < Math.sqrt(numValues)) {
if (numValues >= MIN_LENGTH_FOR_ENUM && enumCases.size < Math.sqrt(numValues) && someCaseIsNotNumber) {
return t.enumCases;
}
}