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