Module:CountryData: Difference between revisions
// via Wikitext Extension for VSCode |
// via Wikitext Extension for VSCode |
||
| Line 82: | Line 82: | ||
-- Build the lookup table with pre-counted size | -- Build the lookup table with pre-counted size | ||
for code, country in pairs(data.countries) do | for code, country in pairs(data.countries) do | ||
local names_to_process = {} | |||
-- Add name field as primary display name | -- Add name field as primary display name | ||
local displayName = country.name or country.canonical_name | local displayName = country.name or country.canonical_name | ||
if displayName then | if displayName then | ||
table.insert(names_to_process, displayName) | |||
end | end | ||
-- Add canonical_name if different from name | -- Add canonical_name if different from name | ||
if country.canonical_name and country.canonical_name ~= country.name then | if country.canonical_name and country.canonical_name ~= country.name then | ||
table.insert(names_to_process, country.canonical_name) | |||
end | end | ||
-- Add variations | -- Add variations | ||
if country.variations and type(country.variations) == "table" then | if country.variations and type(country.variations) == "table" then | ||
for _, variation in pairs(country.variations) do | for _, variation in pairs(country.variations) do | ||
lookup[ | table.insert(names_to_process, variation) | ||
end | |||
end | |||
for _, name in ipairs(names_to_process) do | |||
local normalized = NormalizationText.normalizeText(name) | |||
lookup[normalized] = code | |||
local stripped = DiacriticNormalization.removeDiacritics(normalized) | |||
if stripped ~= normalized then | |||
lookup[stripped] = code | |||
end | end | ||
end | end | ||
| Line 244: | Line 255: | ||
if code and data.countries[code] then | if code and data.countries[code] then | ||
result = data.countries[code] | result = data.countries[code] | ||
end | end | ||
| Line 280: | Line 282: | ||
-- Look up the code | -- Look up the code | ||
local code = nameLookup[normalized] | local code = nameLookup[normalized] | ||
-- Cache the result (including nil) | -- Cache the result (including nil) | ||