Module:CountryAdjectiveDemonym: Difference between revisions
Jump to navigation
Jump to search
imported>Gonnym (simplified code) |
(No difference)
|
Latest revision as of 18:59, 4 August 2021
Documentation for this module may be created at Module:CountryAdjectiveDemonym/doc
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 return end -- ############### Publicly accesible functions ####################### -- if the country name is prefixed by "the" in running text, -- then return that prefix -- Otherwise just return an empty string function 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 retval end 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 end end 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 retval end 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 retval end 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 retval end 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 stripped end return CountryAdjectiveDemonym