local CountryAdjectiveDemonym = { }  local CountryAdjectiveDemonymDataLoaded = false  local countryAdjectivesToNounsTable = { } local countryNounsToAdjectivesTable  = { }  local countryDemonymsToNounsTable = { } local countryNounsToDemonymsTable  = { }  function CountryAdjectiveDemonymDoLoadData() 	countryNounsToAdjectivesTable = mw.loadData( 'মডিউল:দেশ জাতীয়তাসূচক বিশেষণ/বিশেষণ' ) 	countryNounsToDemonymsTable = mw.loadData( 'মডিউল:দেশ জাতীয়তাসূচক বিশেষণ/জাতীয়তাসূচক' ) 	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 	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 == "জর্জিয়া (রাষ্ট্র)" 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( 'মডিউল:দেশ জাতীয়তাসূচক বিশেষণ/দীর্ঘ বিশেষ্য' ) 	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