From 8d0fa289cff0f6f7e23316d618924aec7775f155 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 17 May 2019 01:58:57 -0400 Subject: [PATCH] Include name-suggestion-index matcher in outdated_tags validator --- modules/validations/outdated_tags.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/modules/validations/outdated_tags.js b/modules/validations/outdated_tags.js index 57cc1e7f6..bdab55cb2 100644 --- a/modules/validations/outdated_tags.js +++ b/modules/validations/outdated_tags.js @@ -1,4 +1,6 @@ import { t } from '../util/locale'; +import { matcher, brands } from 'name-suggestion-index'; + import { actionChangePreset } from '../actions/change_preset'; import { actionChangeTags } from '../actions/change_tags'; import { actionUpgradeTags } from '../actions/upgrade_tags'; @@ -10,6 +12,12 @@ import { validationIssue, validationIssueFix } from '../core/validation'; export function validationOutdatedTags() { var type = 'outdated_tags'; + // initialize name-suggestion-index matcher + var nsiMatcher = matcher(); + nsiMatcher.buildMatchIndex(brands.brands); + var nsiKeys = ['amenity', 'leisure', 'shop', 'tourism']; + + function oldTagIssues(entity, context) { var graph = context.graph(); var oldTags = Object.assign({}, entity.tags); // shallow copy @@ -47,6 +55,24 @@ export function validationOutdatedTags() { }); } + // search name-suggestion-index + if (newTags.name) { + for (var i = 0; i < nsiKeys.length; i++) { + var k = nsiKeys[i]; + if (!newTags[k]) continue; + + var match = nsiMatcher.matchKVN(k, newTags[k], newTags.name); + if (!match) continue; + + var brand = brands.brands[match.kvnd]; + if (brand) { + Object.assign(newTags, brand.tags); + break; + } + } + } + + // determine diff var tagDiff = utilTagDiff(oldTags, newTags); if (!tagDiff.length) return [];