Module:CountryAdjectiveDemonym explained

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]

true) then return "the " end return ""end

function CountryAdjectiveDemonym.getCountryFromAdjective(frame) local s = frame.args[1] if not CountryAdjectiveDemonymDataLoaded then CountryAdjectiveDemonymDoLoadData end local retval = countryAdjectivesToNounsTable[s] if retval

nil then if s

"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 retval = countryAdjectivesToNounsTable[s] end 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

nil then return "" end return retvalend

function CountryAdjectiveDemonym.getDemonymFromCountry(frame) local s = frame.args[1] if not CountryAdjectiveDemonymDataLoaded then CountryAdjectiveDemonymDoLoadData end local retval retval = countryNounsToDemonymsTable[s] if retval

nil then retval = countryNounsToAdjectivesTable[s] end if retval

nil then return "" end return retvalend

function CountryAdjectiveDemonym.stripThe(frame) local s = frame.args[1] if s

nil then return "" end if mw.ustring.match(s, "^[T]he Gambia$") ~= nil then return s end local stripped = mw.ustring.gsub(s, "^[tT]he ", "") return strippedend

return CountryAdjectiveDemonym