มอดูล:CountryAdjectiveDemonym
หน้าตา
คู่มือการใช้งานมอดูล[สร้าง]
คุณอาจจะต้องการสร้างคู่มือการใช้งานของมอดูลนี้ ผู้เขียนสามารถทำการทดลองได้ที่กระบะทราย (สร้าง | คัดลอก) และชุดทดสอบ (สร้าง) ของมอดูลนี้ โปรดเพิ่มหมวดหมู่ไปที่หน้าย่อย /doc หน้าย่อยของมอดูลนี้ |
local CountryAdjectiveDemonym = { }
local CountryAdjectiveDemonymDataLoaded = false
local countryAdjectivesToNounsTable = { }
local countryNounsToAdjectivesTable = { }
local countryDemonymsToNounsTable = { }
local countryNounsToDemonymsTable = { }
local countriesPrefixedByTheTable = { }
function CountryAdjectiveDemonymDoLoadData()
countriesPrefixedByTheTable = mw.loadData( 'มอดูล:CountryAdjectiveDemonym/The' )
countryNounsToAdjectivesTable = mw.loadData( 'มอดูล:CountryAdjectiveDemonym/Adjectives' )
countryNounsToDemonymsTable = mw.loadData( 'มอดูล: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( 'มอดูล: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