in build_data.js [259:360]
function suggestionsToPresets(presets) {
const brands = nsi.brands.brands;
const wikidata = nsi.wikidata.wikidata;
Object.keys(brands).forEach(kvnd => {
const suggestion = brands[kvnd];
const qid = suggestion.tags['brand:wikidata'];
if (!qid || !/^Q\d+$/.test(qid)) return; // wikidata tag missing or looks wrong..
const parts = kvnd.split('|', 2);
const kv = parts[0];
const name = parts[1].replace('~', ' ');
let presetID, preset;
// sometimes we can choose a more specific preset then key/value..
if (suggestion.tags.cuisine) {
// cuisine can contain multiple values, so try them all in order
let cuisines = suggestion.tags.cuisine.split(';');
for (let i = 0; i < cuisines.length; i++) {
presetID = kv + '/' + cuisines[i].trim();
preset = presets[presetID];
if (preset) break; // we matched one
}
} else if (suggestion.tags.vending) {
if (suggestion.tags.vending === 'parcel_pickup;parcel_mail_in') {
presetID = kv + '/parcel_pickup_dropoff';
} else {
presetID = kv + '/' + suggestion.tags.vending;
}
preset = presets[presetID];
}
// A few exceptions where the NSI tagging doesn't exactly match iD tagging..
if (kv === 'healthcare/clinic') {
presetID = 'amenity/clinic';
preset = presets[presetID];
} else if (kv === 'leisure/tanning_salon') {
presetID = 'shop/beauty/tanning';
preset = presets[presetID];
}
// fallback to key/value
if (!preset) {
presetID = kv;
preset = presets[presetID];
}
// still no match?
if (!preset) {
console.log('Warning: No preset "' + presetID + '" for name-suggestion "' + name + '"');
return;
}
let suggestionID = presetID + '/' + name.replace('/', '');
let tags = { 'brand:wikidata': qid };
for (let k in preset.tags) {
// prioritize suggestion tags over preset tags (for `vending`,`cuisine`, etc)
tags[k] = suggestion.tags[k] || preset.tags[k];
}
// Prefer a wiki commons logo sometimes.. #6361
const preferCommons = {
Q177054: true, // Burger King
Q524757: true, // KFC
Q779845: true, // CBA
Q1205312: true // In-N-Out
};
let logoURL;
let logoURLs = wikidata[qid] && wikidata[qid].logos;
if (logoURLs) {
if (logoURLs.wikidata && preferCommons[qid]) {
logoURL = logoURLs.wikidata;
} else if (logoURLs.facebook) {
logoURL = logoURLs.facebook;
} else if (logoURLs.twitter) {
logoURL = logoURLs.twitter;
} else {
logoURL = logoURLs.wikidata;
}
}
presets[suggestionID] = {
name: name,
icon: preset.icon,
imageURL: logoURL,
geometry: preset.geometry,
tags: tags,
addTags: suggestion.tags,
reference: preset.reference,
countryCodes: suggestion.countryCodes,
terms: (suggestion.matchNames || []),
matchScore: 2,
suggestion: true
};
});
return presets;
}