mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-13 09:12:52 +00:00
Improve performance and scope of the generic name validation
This commit is contained in:
@@ -9,26 +9,38 @@ import { discardNames } from '../../node_modules/name-suggestion-index/config/fi
|
||||
export function validationGenericName() {
|
||||
var type = 'generic_name';
|
||||
|
||||
// known list of generic names (e.g. "bar")
|
||||
var discardNamesRegexes = discardNames.map(function(discardName) {
|
||||
return new RegExp(discardName, 'i');
|
||||
});
|
||||
|
||||
var keysToTestForGenericValues = ['amenity', 'building', 'leisure', 'man_made', 'shop', 'tourism'];
|
||||
|
||||
function isGenericName(entity) {
|
||||
var name = entity.tags.name;
|
||||
if (!name) return false;
|
||||
name = name.toLowerCase();
|
||||
|
||||
var i, re;
|
||||
var i, key, val;
|
||||
|
||||
// test if the name is just the tag value (e.g. "park")
|
||||
var keys = ['amenity', 'leisure', 'shop', 'man_made', 'tourism'];
|
||||
for (i = 0; i < keys.length; i++) {
|
||||
var val = entity.tags[keys[i]];
|
||||
if (val && val.replace(/\_/g, ' ').toLowerCase() === name.toLowerCase()) {
|
||||
return name;
|
||||
// test if the name is just the key or tag value (e.g. "park")
|
||||
for (i = 0; i < keysToTestForGenericValues.length; i++) {
|
||||
key = keysToTestForGenericValues[i];
|
||||
val = entity.tags[key];
|
||||
if (val) {
|
||||
val = val.toLowerCase();
|
||||
if (key === name ||
|
||||
val === name ||
|
||||
key.replace(/\_/g, ' ') === name ||
|
||||
val.replace(/\_/g, ' ') === name) {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// test if the name is a generic name (e.g. "pizzaria")
|
||||
for (i = 0; i < discardNames.length; i++) {
|
||||
re = new RegExp(discardNames[i], 'i');
|
||||
if (re.test(name)) {
|
||||
// test if the name is otherwise generic
|
||||
for (i = 0; i < discardNamesRegexes.length; i++) {
|
||||
if (discardNamesRegexes[i].test(name)) {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user