Module:World topic

local p = {}

local Navbox = require("Module:Navbox") local country = { Afghanistan = {""}, Albania = {""}, Algeria = {""}, Andorra = {""}, Angola = {""}, ["Antigua and Barbuda"] = {""}, Argentina = {""}, Armenia = {""}, Australia = {""}, Austria = {""}, Azerbaijan = {""}, Bahamas = {"the Bahamas"}, Bahrain = {""}, Bangladesh = {""}, Barbados = {""}, Belarus = {""}, Belgium = {""}, Belize = {""}, Benin = {""}, Bhutan = {""}, Bolivia = {""}, ["Bosnia and Herzegovina"] = {""}, Botswana = {""}, Brazil = {""}, Brunei = {""}, Bulgaria = {""}, ["Burkina Faso"] = {""}, Burundi = {""}, Cambodia = {""}, Cameroon = {""}, Canada = {""}, ["Cape Verde"] = {""}, ["Central African Republic"] = {"the Central African Republic"}, Chad = {""}, Chile = {""}, China = {""}, Colombia = {""}, Comoros = {""}, ["Democratic Republic of the Congo"] = {"the Democratic Republic of the Congo"}, ["Republic of the Congo"] = {"the Republic of the Congo"}, ["Costa Rica"] = {""}, Croatia = {""}, Cuba = {""}, Cyprus = {""}, ["Czech Republic"] = {"the Czech Republic"}, Denmark = {""}, Djibouti = {""}, Dominica = {""}, ["East Timor"] = {""}, ["Dominican Republic"] = {"the Dominican Republic"}, Ecuador = {""}, Egypt = {""}, ["El Salvador"] = {""}, ["Equatorial Guinea"] = {""}, Eritrea = {""}, Estonia = {""}, Eswatini = {""}, Ethiopia = {""}, Fiji = {""}, Finland = {""}, France = {""}, Gabon = {""}, Gambia = {"the Gambia"}, Georgia = {"Georgia (country)"}, Germany = {""}, Ghana = {""}, Greece = {""}, Grenada = {""}, Guatemala = {""}, Guinea = {""}, ["Guinea-Bissau"] = {""}, Guyana = {""}, Haiti = {""}, Honduras = {""}, Hungary = {""}, Iceland = {""}, India = {""}, Indonesia = {""}, Iran = {""}, Iraq = {""}, Ireland = {"the Republic of Ireland"}, Israel = {""}, Italy = {""}, ["Ivory Coast"] = {""}, Jamaica = {""}, Japan = {""}, Jordan = {""}, Kazakhstan = {""}, Kenya = {""}, Kiribati = {""}, Kosovo = {""}, ["North Korea"] = {""}, ["South Korea"] = {""}, Kuwait = {""}, Kyrgyzstan = {""}, Laos = {""}, Latvia = {""}, Lebanon = {""}, Lesotho = {""}, Liberia = {""}, Libya = {""}, Liechtenstein = {""}, Lithuania = {""}, Luxembourg = {""}, Madagascar = {""}, Malawi = {""}, Malaysia = {""}, Maldives = {""}, Mali = {""}, Malta = {""}, ["Marshall Islands"] = {"the Marshall Islands"}, Mauritania = {""}, Mauritius = {""}, Mexico = {""}, ["Federated States of Micronesia"] = {"the Federated States of Micronesia"}, Moldova = {""}, Monaco = {""}, Mongolia = {""}, Montenegro = {""}, Morocco = {""}, Mozambique = {""}, Myanmar = {""}, Namibia = {""}, Nauru = {""}, Nepal = {""}, Netherlands = {"the Netherlands"}, ["New Zealand"] = {""}, Nicaragua = {""}, Niger = {""}, Nigeria = {""}, ["North Macedonia"] = {""}, Norway = {""}, Oman = {""}, Pakistan = {""}, Palestine = {"State of Palestine"}, Palau = {""}, Panama = {""}, ["Papua New Guinea"] = {""}, Paraguay = {""}, Peru = {""}, Philippines = {"the Philippines"}, Poland = {""}, Portugal = {""}, Qatar = {""}, Romania = {""}, Russia = {""}, Rwanda = {""}, ["Saint Kitts and Nevis"] = {""}, ["Saint Lucia"] = {""}, ["Saint Vincent and the Grenadines"] = {""}, Samoa = {""}, ["San Marino"] = {""}, ["São Tomé and Príncipe"] = {""}, ["Saudi Arabia"] = {""}, Senegal = {""}, Serbia = {""}, Seychelles = {""}, ["Sierra Leone"] = {""}, Singapore = {""}, Slovakia = {""}, Slovenia = {""}, ["Solomon Islands"] = {""}, Somalia = {""}, ["South Africa"] = {""}, ["South Sudan"] = {""}, Spain = {""}, ["Sri Lanka"] = {""}, Sudan = {""}, Suriname = {""}, Sweden = {""}, Switzerland = {""}, Syria = {""}, Taiwan = {""}, Tajikistan = {""}, Tanzania = {""}, Thailand = {""}, Togo = {""}, Tonga = {""}, ["Trinidad and Tobago"] = {""}, Tunisia = {""}, Turkey = {""}, Turkmenistan = {""}, Tuvalu = {""}, Uganda = {""}, Ukraine = {""}, ["United Arab Emirates"] = {"the United Arab Emirates"}, ["United Kingdom"] = {"the United Kingdom"}, ["United States"] = {"the United States"}, Uruguay = {""}, Uzbekistan = {""}, Vanuatu = {""}, ["Vatican City"] = {""}, Venezuela = {""}, Vietnam = {""}, ["Western Sahara"] = {""}, Yemen = {""}, Zambia = {""}, Zimbabwe = {""}, }

local function li(text) local li = mw.html.create("li") li :wikitext(text) :done return tostring(li) end

local function linktarget(x, y)	if y ~= nil and y == "" then return x	else return y	end end

local function links(args1, args2, argsprefix, argssuffix, sorter, redlinks, override) local list = {} local prefix = (args1 or argsprefix or "") .. " "	local suffix = args2 or argssuffix or "" for x, y in pairs(sorter) do		local target = nil if redlinks then if override[y] then target = override[y] elseif y == "Georgia" or y == "Palestine" then if mw.title.new(prefix..country[y][1]..suffix).exists then target = prefix..country[y][1]..suffix else target = prefix..y..suffix end else target = prefix..linktarget(y, country[y][1])..suffix end else -- noredlinks if override[y] then if mw.title.new(override[y]).exists then target = override[y] end elseif mw.title.new(prefix..linktarget(y, country[y][1])..suffix).exists then target = prefix..linktarget(y, country[y][1])..suffix elseif y == "Georgia" or y == "Palestine" then if mw.title.new(prefix..y..suffix).exists then target = prefix..y..suffix end end end if target then table.insert(list, li(""..y.."" ) ) end end return list end

function p.main(frame) local pframe = frame:getParent local config = frame.args local args = pframe.args return p._main(args) end

function p._main(args) local state, titlemid, title, group1 if mw.title.getCurrentTitle == "Template:World topic" then state = "autocollapse" else state = args.state end if args[1] ~= nil or args.prefix ~= nil and (args[2] == nil or args.suffix == nil) then titlemid = " the" end if args.title ~= nil then title = args.title else title = ""..(args[1] or args.prefix or "")..(titlemid or "").." World"..(args.suffix or "").."" end if args.group1 ~= nil and args.group1 ~= "" then group1 = args.group1 end local sorter = {} for n in pairs(country) do		table.insert(sorter, n)	end table.sort(sorter)

-- parse link overrides, e.g. |link_United_States=Foo sets override["United States"] = "Foo" local override = {} for k,v in pairs(args) do		local country = mw.ustring.match(k, "^link_(.*)") if country then country = mw.ustring.gsub(country, "_", " ") override[country] = v		end end local redlinks = args.noredlinks == nil local list1 = table.concat(links(args[1], args[2], args.prefix, args.suffix, sorter, redlinks, override) ) local navarguments = { name = args.name or "World topic", state = state, navbar = args.navbar or "Tnavbar", border = args.border, title = title, image = args.image, titlestyle = args.titlestyle, bodystyle = args.bodystyle, abovestyle = args.abovestyle, belowstyle = args.belowstyle, groupstyle = args.groupstyle, liststyle = args.liststyle, listclass = "hlist", above = args.above, group1 = group1, list1 = list1 }	return Navbox._navbox(navarguments) end

return p