Module:CountryAdjectiveDemonym/sandbox 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

for adjective, noun in pairs(countryAdjectivesToNounsTable) do if string.find(s, adjective) or string.find(s, noun) then 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