Jump to content

Module:CountryAdjectiveDemonym/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by BrownHairedGirl (talk | contribs) at 21:43, 7 October 2019 (create, using "CountryAdjectiveDemonym"). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
local CountryAdjectiveDemonym = { }

local CountryAdjectiveDemonymDataLoaded = false

local countryAdjectivesToNounsTable = { }
local countryNounstoAdjectivesTable  = { }
local countriesPrefixedByTheTable = { }

function CountryAdjectiveDemonymDoLoadData()
	countriesPrefixedByTheTable = mw.loadData( 'Module:CountryAdjectiveDemonym/the' )
	countryNounstoAdjectivesTable = mw.loadData( 'Module:CountryAdjectiveDemonym/adjectives' )
	local myCounter = 0
	local myNoun, myAdj
	for myNoun, myAdj in pairs(countryNounstoAdjectivesTable) do
		countryAdjectivesToNounsTable[myAdj] = myNoun
		myCounter = myCounter + 1
	end
	CountryAdjectiveDemonymDataLoaded = true
	return myCounter
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.getCountryFromDemonym(frame)
	local s = frame.args[1]
	if not CountryAdjectiveDemonymDataLoaded then
		CountryAdjectiveDemonymDoLoadData()
	end
	local retval = countryAdjectivesToNounsTable[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 = countryNounstoAdjectivesTable[s]
	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