Skip to content

Commit 393cbd8

Browse files
committed
Add validation for terms to be lowercase and sorted
1 parent 078eb20 commit 393cbd8

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

lib/build.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ function generateFields(dataDir, tstrings, searchableFieldIDs) {
260260
delete field.label;
261261
}
262262

263+
validateTerms(field.terms, `field "${id}"`);
263264
tstrings.fields[id].terms = Array.from(new Set(
264265
(field.terms || [])
265266
.map(t => t.toLowerCase().trim())
@@ -337,6 +338,7 @@ function generatePresets(dataDir, tstrings, searchableFieldIDs, listReusedIcons)
337338
));
338339
preset.aliases.forEach(a => names.add(a.toLowerCase()));
339340

341+
validateTerms(preset.terms, `preset "${id}"`);
340342
preset.terms = Array.from(new Set(
341343
(preset.terms || [])
342344
.map(t => t.toLowerCase().trim())
@@ -854,7 +856,17 @@ function validatePresetFields(presets, fields) {
854856
process.stdout.write('Field "' + fields[fieldID].label + '" (' + fieldID + ') isn\'t used by any presets.\n');
855857
}
856858
}
859+
}
860+
861+
function validateTerms(terms, where) {
862+
if (!terms) return;
863+
864+
const expectedTerms = terms.map(term => term.toLowerCase().trim()).sort()
865+
if (terms.every((term, index) => expectedTerms[index] === term)) return
857866

867+
process.stderr.write(`Expected terms in ${where} to be lowercase and sorted alphabetically.`);
868+
process.stdout.write('\n');
869+
process.exit(1);
858870
}
859871

860872
function validateDefaults(defaults, categories, presets) {

0 commit comments

Comments
 (0)