pogo-data-generator
Version:
Pokemon GO project data generator
45 lines (44 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveEnumId = resolveEnumId;
exports.resolveEnumIds = resolveEnumIds;
exports.enumName = enumName;
function resolveEnumId(enumObject, value, label = 'value') {
if (value === undefined || value === null || value === '')
return undefined;
if (typeof value === 'number')
return value;
if (/^\d+$/.test(value))
return +value;
const resolved = enumObject[value];
if (typeof resolved === 'number')
return resolved;
console.warn(`Unable to resolve ${label}`, value);
return undefined;
}
function resolveEnumIds(enumObject, values = [], label = 'value') {
return values
.map((value) => resolveEnumId(enumObject, value, label))
.filter((value) => value !== undefined)
.sort((a, b) => a - b);
}
function enumName(enumObject, value, label = 'value') {
if (value === undefined || value === null || value === '')
return undefined;
if (typeof value === 'string') {
if (/^\d+$/.test(value))
return enumName(enumObject, +value, label);
if (enumObject[value] !== undefined)
return value;
console.warn(`Unable to resolve ${label}`, value);
return undefined;
}
if (typeof enumObject[value] === 'string') {
return enumObject[value];
}
const matchedEntry = Object.entries(enumObject).find(([key, enumValue]) => !/^\d+$/.test(key) && enumValue === value);
if (matchedEntry)
return matchedEntry[0];
console.warn(`Unable to resolve ${label}`, value);
return undefined;
}