Module:Related topics category

From AlternateWiki

Documentation for this module may be created at Module:Related topics category/doc

local p = {}

local parents = {
	["Asia"] = {0},
		["Afghanistan"] = {"Asia"},
		["Armenia"] = {"Asia"},
		["Azerbaijan"] = {"Asia", "Europe"},
		["Bahrain"] = {"Asia"},
		["Bangladesh"] = {"Asia"},
		["Bhutan"] = {"Asia"},
		["British Indian Ocean Territory"] = {"Asia"},
		["Brunei"] = {"Asia"},
		["Cambodia"] = {"Asia"},
		["China"] = {"Asia"},
		["Christmas Island"] = {"Asia"},
		["Cocos Islands"] = {"Asia"},
		["Georgia"] = {"Asia", "Europe"},
		["Hong Kong"] = {"Asia"},
		["India"] = {"Asia"},
		["Indonesia"] = {"Asia"},
		["Iran"] = {"Asia"},
		["Iraq"] = {"Asia"},
		["Israel"] = {"Asia"},
		["Japan"] = {"Asia"},
		["Jordan"] = {"Asia"},
		["Kazakhstan"] = {"Asia", "Europe"},
		["Kuwait"] = {"Asia"},
		["Kyrgyzstan"] = {"Asia"},
		["Laos"] = {"Asia"},
		["Lebanon"] = {"Asia"},
		["Macau"] = {"Asia"},
		["Malaysia"] = {"Asia"},
		["Maldives"] = {"Asia"},
		["Mongolia"] = {"Asia"},
		["Myanmar"] = {"Asia"},
		["Nepal"] = {"Asia"},
		["North Korea"] = {"Asia"},
		["Oman"] = {"Asia"},
		["Pakistan"] = {"Asia"},
		["Palestine"] = {"Asia"},
		["Philippines"] = {"Asia"},
		["Qatar"] = {"Asia"},
		["Saudi Arabia"] = {"Asia"},
		["Singapore"] = {"Asia"},
		["South Korea"] = {"Asia"},
		["Sri Lanka"] = {"Asia"},
		["Syria"] = {"Asia"},
		["Taiwan"] = {"Asia"},
		["Tajikistan"] = {"Asia"},
		["Thailand"] = {"Asia"},
		["Turkey"] = {"Asia", "Europe"},
		["Turkmenistan"] = {"Asia"},
		["United Arab Emirates"] = {"Asia"},
		["Uzbekistan"] = {"Asia"},
		["Vietnam"] = {"Asia"},
		["Yemen"] = {"Asia"},
	["Europe"] = {0},
		["Albania"] = {"Europe"},
		["Andorra"] = {"Europe"},
		["Austria"] = {"Europe"},
		["Belarus"] = {"Europe"},
		["Belgium"] = {"Europe"},
		["Bosnia and Herzegovina"] = {"Europe"},
		["Bulgaria"] = {"Europe"},
		["Croatia"] = {"Europe"},
		["Cyprus"] = {"Europe"},
		["Czechia"] = {"Europe"},
		["Denmark"] = {"Europe"},
		["Estonia"] = {"Europe"},
		["Faroe Islands"] = {"Europe"},
		["Finland"] = {"Europe"},
		["France"] = {"Europe"},
		["Germany"] = {"Europe"},
		["Gibraltar"] = {"Europe"},
		["Greece"] = {"Europe"},
		["Guernsey"] = {"Europe"},
		["Hungary"] = {"Europe"},
		["Iceland"] = {"Europe"},
		["Ireland"] = {"Europe"},
		["Isle of Man"] = {"Europe"},
		["Italy"] = {"Europe"},
		["Jersey"] = {"Europe"},
		["Kosovo"] = {"Europe"},
		["Latvia"] = {"Europe"},
		["Liechtenstein"] = {"Europe"},
		["Lithuania"] = {"Europe"},
		["Luxembourg"] = {"Europe"},
		["Macedonia"] = {"Europe"},
		["Malta"] = {"Europe"},
		["Moldova"] = {"Europe"},
		["Monaco"] = {"Europe"},
		["Montenegro"] = {"Europe"},
		["Netherlands"] = {"Europe"},
		["Norway"] = {"Europe"},
		["Poland"] = {"Europe"},
		["Portugal"] = {"Europe"},
		["Romania"] = {"Europe"},
		["Russia"] = {"Europe", "Asia"},
		["San Marino"] = {"Europe"},
		["Serbia"] = {"Europe"},
		["Slovakia"] = {"Europe"},
		["Slovenia"] = {"Europe"},
		["Spain"] = {"Europe"},
		["Svalbard and Jan Mayen"] = {"Europe"},
		["Sweden"] = {"Europe"},
		["Switzerland"] = {"Europe"},
		["Ukraine"] = {"Europe"},
		["United Kingdom"] = {"Europe"},
			["Havering"] = {"United Kingdom"},
		["Vatican City"] = {"Europe"},
	["Africa"] = {0},
		["Algeria"] = {"Africa"},
		["Angola"] = {"Africa"},
		["Benin"] = {"Africa"},
		["Botswana"] = {"Africa"},
		["Burkina Faso"] = {"Africa"},
		["Burundi"] = {"Africa"},
		["Cameroon"] = {"Africa"},
		["Cape Verde"] = {"Africa"},
		["Central African Republic"] = {"Africa"},
		["Chad"] = {"Africa"},
		["Comoros"] = {"Africa"},
		["Democratic Republic of the Congo"] = {"Africa"},
		["Djibouti"] = {"Africa"},
		["Egypt"] = {"Africa", "Asia"},
		["Equatorial Guinea"] = {"Africa"},
		["Eritrea"] = {"Africa"},
		["Ethiopia"] = {"Africa"},
		["Gabon"] = {"Africa"},
		["Gambia"] = {"Africa"},
		["Ghana"] = {"Africa"},
		["Guinea"] = {"Africa"},
		["Guinea-Bissau"] = {"Africa"},
		["Ivory Coast"] = {"Africa"},
		["Kenya"] = {"Africa"},
		["Lesotho"] = {"Africa"},
		["Liberia"] = {"Africa"},
		["Libya"] = {"Africa"},
		["Madagascar"] = {"Africa"},
		["Malawi"] = {"Africa"},
		["Mali"] = {"Africa"},
		["Mauritania"] = {"Africa"},
		["Mauritius"] = {"Africa"},
		["Mayotte"] = {"Africa"},
		["Morocco"] = {"Africa"},
		["Mozambique"] = {"Africa"},
		["Namibia"] = {"Africa"},
		["Niger"] = {"Africa"},
		["Nigeria"] = {"Africa"},
		["Republic of the Congo"] = {"Africa"},
		["Reunion"] = {"Africa"},
		["Rwanda"] = {"Africa"},
		["Saint Helena"] = {"Africa"},
		["Sao Tome and Principe"] = {"Africa"},
		["Senegal"] = {"Africa"},
		["Seychelles"] = {"Africa"},
		["Sierra Leone"] = {"Africa"},
		["Somalia"] = {"Africa"},
		["South Africa"] = {"Africa"},
		["South Sudan"] = {"Africa"},
		["Sudan"] = {"Africa"},
		["Swaziland"] = {"Africa"},
		["Tanzania"] = {"Africa"},
		["Togo"] = {"Africa"},
		["Tunisia"] = {"Africa"},
		["Uganda"] = {"Africa"},
		["Western Sahara"] = {"Africa"},
		["Zambia"] = {"Africa"},
		["Zimbabwe"] = {"Africa"},
	["Oceania"] = {0},
		["American Samoa"] = {"Oceania"},
		["Australia"] = {"Oceania"},
		["Cook Islands"] = {"Oceania"},
		["East Timor"] = {"Oceania"},
		["Fiji"] = {"Oceania"},
		["French Polynesia"] = {"Oceania"},
		["Guam"] = {"Oceania"},
		["Kiribati"] = {"Oceania"},
		["Marshall Islands"] = {"Oceania"},
		["Micronesia"] = {"Oceania"},
		["Nauru"] = {"Oceania"},
		["New Caledonia"] = {"Oceania"},
		["New Zealand"] = {"Oceania"},
		["Niue"] = {"Oceania"},
		["Northern Mariana Islands"] = {"Oceania"},
		["Palau"] = {"Oceania"},
		["Papua New Guinea"] = {"Oceania"},
		["Pitcairn"] = {"Oceania"},
		["Samoa"] = {"Oceania"},
		["Solomon Islands"] = {"Oceania"},
		["Tokelau"] = {"Oceania"},
		["Tonga"] = {"Oceania"},
		["Tuvalu"] = {"Oceania"},
		["Vanuatu"] = {"Oceania"},
		["Wallis and Futuna"] = {"Oceania"},
	["North America"] = {0},
		["Anguilla"] = {"North America"},
		["Antigua and Barbuda"] = {"North America"},
		["Aruba"] = {"North America"},
		["Bahamas"] = {"North America"},
		["Barbados"] = {"North America"},
		["Belize"] = {"North America"},
		["Bermuda"] = {"North America"},
		["British Virgin Islands"] = {"North America"},
		["Canada"] = {"North America"},
		["Cayman Islands"] = {"North America"},
		["Costa Rica"] = {"North America"},
		["Cuba"] = {"North America"},
		["Curacao"] = {"North America"},
		["Dominica"] = {"North America"},
		["Dominican Republic"] = {"North America"},
		["El Salvador"] = {"North America"},
		["Greenland"] = {"North America"},
		["Grenada"] = {"North America"},
		["Guatemala"] = {"North America"},
		["Haiti"] = {"North America"},
		["Honduras"] = {"North America"},
		["Jamaica"] = {"North America"},
		["Mexico"] = {"North America"},
		["Montserrat"] = {"North America"},
		["Netherlands Antilles"] = {"North America"},
		["Nicaragua"] = {"North America"},
		["Panama"] = {"North America"},
		["Puerto Rico"] = {"North America"},
		["Saint Barthelemy"] = {"North America"},
		["Saint Kitts and Nevis"] = {"North America"},
		["Saint Lucia"] = {"North America"},
		["Saint Martin"] = {"North America"},
		["Saint Pierre and Miquelon"] = {"North America"},
		["Saint Vincent and the Grenadines"] = {"North America"},
		["Sint Maarten"] = {"North America"},
		["Trinidad and Tobago"] = {"North America"},
		["Turks and Caicos Islands"] = {"North America"},
		["U.S. Virgin Islands"] = {"North America"},
		["United States"] = {"North America"},
	["Antarctica"] = {0},
		["Antarctica"] = {"Antarctica"},
	["South America"] = {0},
		["Argentina"] = {"South America"},
		["Bolivia"] = {"South America"},
		["Brazil"] = {"South America"},
		["Chile"] = {"South America"},
		["Colombia"] = {"South America"},
		["Ecuador"] = {"South America"},
		["Falkland Islands"] = {"South America"},
		["Guyana"] = {"South America"},
		["Paraguay"] = {"South America"},
		["Peru"] = {"South America"},
		["Suriname"] = {"South America"},
		["Uruguay"] = {"South America"},
		["Venezuela"] = {"South America"},

    ["0"] = {} -- An empty list for the root node
}

local function getCategoryTree(node)
    local tree = {}
    table.insert(tree, "[[Category:" .. node .. "-related topics]]")
	
    local function processParents(node)
        if parents[node] then
            for _, parent in ipairs(parents[node]) do
                if parent ~= 0 then
                    table.insert(tree, "[[Category:" .. parent .. "-related topics]]")
                    processParents(parent)
                end
            end
        end
    end

    processParents(node)
    return table.concat(tree, "")
end

function p.getCategoryTree(frame)
    local input = frame.args[1]
    local tree = getCategoryTree(input)
    return tree
end

return p