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 = {""},

["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 = {""},

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 = {""},

["Timor-Leste"] = {""},

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" 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" 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