local CountryAdjectiveDemonym =
local CountryAdjectiveDemonymDataLoaded = false
local countryAdjectivesToNounsTable = local countryNounsToAdjectivesTable =
local countryDemonymsToNounsTable = local countryNounsToDemonymsTable =
local countriesPrefixedByTheTable =
function CountryAdjectiveDemonymDoLoadData countriesPrefixedByTheTable = mw.loadData('Module:CountryAdjectiveDemonym/The') countryNounsToAdjectivesTable = mw.loadData('Module:CountryAdjectiveDemonym/Adjectives') countryNounsToDemonymsTable = mw.loadData('Module:CountryAdjectiveDemonym/Demonyms') local myNoun, myAdjective -- first, load the adjectives table for myNoun, myAdjective in pairs(countryNounsToAdjectivesTable) do countryAdjectivesToNounsTable[myAdjective] = myNoun end
-- Now load the denomyms table local myDemonym for myNoun, myDemonym in pairs(countryNounsToDemonymsTable) do countryDemonymsToNounsTable[myDemonym] = myNoun end CountryAdjectiveDemonymDataLoaded = true returnend
-- ############### Publicly accesible functions #######################
-- if the country name is prefixed by "the" in running text,-- then return that prefix-- Otherwise just return an empty stringfunction CountryAdjectiveDemonym.countryPrefixThe(frame) local s = frame.args[1] if not CountryAdjectiveDemonymDataLoaded then CountryAdjectiveDemonymDoLoadData end if (countriesPrefixedByTheTable[s]
function CountryAdjectiveDemonym.getCountryFromAdjective(frame) local s = frame.args[1] if not CountryAdjectiveDemonymDataLoaded then CountryAdjectiveDemonymDoLoadData end local retval = countryAdjectivesToNounsTable[s] if retval
"Georgia (country)" then return s end return "" end return retvalend
function CountryAdjectiveDemonym.getCountryFromString(frame) local s = frame.args[1] if not CountryAdjectiveDemonymDataLoaded then CountryAdjectiveDemonymDoLoadData end local similarLongerNouns = mw.loadData('Module:CountryAdjectiveDemonym/LongerNouns') for adjective, noun in pairs(countryAdjectivesToNounsTable) do if string.find(s, adjective) or string.find(s, noun) then for longerNoun, nameToUse in pairs(similarLongerNouns) do if string.find(s, longerNoun) then return nameToUse end end return noun end endend
function CountryAdjectiveDemonym.getCountryFromDemonym(frame) local s = frame.args[1] if not CountryAdjectiveDemonymDataLoaded then CountryAdjectiveDemonymDoLoadData end local retval = countryDemonymsToNounsTable[s] if retval
nil then return "" end return retvalend
function CountryAdjectiveDemonym.getAdjectiveFromCountry(frame) local s = frame.args[1] if not CountryAdjectiveDemonymDataLoaded then CountryAdjectiveDemonymDoLoadData end local retval = countryNounsToAdjectivesTable[s] if retval
function CountryAdjectiveDemonym.getDemonymFromCountry(frame) local s = frame.args[1] if not CountryAdjectiveDemonymDataLoaded then CountryAdjectiveDemonymDoLoadData end local retval retval = countryNounsToDemonymsTable[s] if retval
nil then return "" end return retvalend
function CountryAdjectiveDemonym.stripThe(frame) local s = frame.args[1] if s
return CountryAdjectiveDemonym