Permanently protected module
From Wikipedia, the free encyclopedia


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

		countryAdjectivesToNounsTablemyAdjective = myNoun

	end



	-- Now load the denomyms table

	local myDemonym

	for myNoun, myDemonym in pairs(countryNounsToDemonymsTable) do

		countryDemonymsToNounsTablemyDemonym = 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.args1

	if not CountryAdjectiveDemonymDataLoaded then

		CountryAdjectiveDemonymDoLoadData()

	end

	if (countriesPrefixedByTheTables == true) then

		return "the "

	end

	return ""

end





function CountryAdjectiveDemonym.getCountryFromAdjective(frame)

	local s = frame.args1

	if not CountryAdjectiveDemonymDataLoaded then

		CountryAdjectiveDemonymDoLoadData()

	end

	local retval = countryAdjectivesToNounsTables

	if retval == nil then

		if s == "Georgia (country)" then

			return s

		end

		return ""

	end

	return retval

end



function CountryAdjectiveDemonym.getCountryFromString(frame)

	local s = frame.args1

	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.args1

	if not CountryAdjectiveDemonymDataLoaded then

		CountryAdjectiveDemonymDoLoadData()

	end

	local retval = countryDemonymsToNounsTables

	if retval == nil then 

		retval = countryAdjectivesToNounsTables

	end

	if retval == nil then

		return ""

	end

	return retval

end





function CountryAdjectiveDemonym.getAdjectiveFromCountry(frame)

	local s = frame.args1

	if not CountryAdjectiveDemonymDataLoaded then

		CountryAdjectiveDemonymDoLoadData()

	end

	local retval = countryNounsToAdjectivesTables

	if retval == nil then

		return ""

	end

	return retval

end





function CountryAdjectiveDemonym.getDemonymFromCountry(frame)

	local s = frame.args1

	if not CountryAdjectiveDemonymDataLoaded then

		CountryAdjectiveDemonymDoLoadData()

	end

	local retval

	retval = countryNounsToDemonymsTables

	if retval == nil then

		retval = countryNounsToAdjectivesTables

	end

	if retval == nil then

		return ""

	end

	return retval

end





function CountryAdjectiveDemonym.stripThe(frame)

	local s = frame.args1

	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