also check preset aliases in suspicious names validation

see #9522
This commit is contained in:
Martin Raifer
2025-03-17 13:31:26 +01:00
parent 74dc459a4a
commit 58cb5a0b80
3 changed files with 43 additions and 30 deletions

View File

@@ -45,17 +45,18 @@ export function validationSuspiciousName(context) {
return false;
}
/** @param {string} name @param {string} presetName */
function nameMatchesPresetName(name, presetName) {
if (!presetName) return false;
/** @param {string} name */
function nameMatchesPresetName(name, preset) {
if (!preset) return false;
return name.toLowerCase() === presetName.toLowerCase();
name = name.toLowerCase();
return name === preset.name().toLowerCase() || preset.aliases().some(alias => name === alias.toLowerCase());
}
/** @param {string} name @param {string} presetName */
function isGenericName(name, tags, presetName) {
/** @param {string} name */
function isGenericName(name, tags, preset) {
name = name.toLowerCase();
return nameMatchesRawTag(name, tags) || nameMatchesPresetName(name, presetName) || isGenericMatchInNsi(tags);
return nameMatchesRawTag(name, tags) || nameMatchesPresetName(name, preset) || isGenericMatchInNsi(tags);
}
function makeGenericNameIssue(entityId, nameKey, genericName, langCode) {
@@ -113,7 +114,7 @@ export function validationSuspiciousName(context) {
let issues = [];
const presetName = presetManager.match(entity, context.graph()).name();
const preset = presetManager.match(entity, context.graph());
for (let key in tags) {
const m = key.match(/^name(?:(?::)([a-zA-Z_-]+))?$/);
@@ -122,7 +123,7 @@ export function validationSuspiciousName(context) {
const langCode = m.length >= 2 ? m[1] : null;
const value = tags[key];
if (isGenericName(value, tags, presetName)) {
if (isGenericName(value, tags, preset)) {
issues.provisional = _waitingForNsi; // retry later if we are waiting on NSI to finish loading
issues.push(makeGenericNameIssue(entity.id, key, value, langCode));
}