ಮಾಡ್ಯೂಲ್:Country extract
ಗೋಚರ
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This Lua module is used on ೪,೧೩,೦೦೦+ pages, or roughly 290% of all pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
local p = {}
--
-- to enable us to replicate the current functioning of CountryAbbr and CountryAbbr2
-- We need to deal with
-- 1 alternative names ISO 3166 should do that
-- 2 {{<name>}}
-- 3 [ [<name>] ]
-- 4 [ [<name>|<junk>] ]
-- 5 [ [image:flag of <country>.[svg|gif|png|jpg]|\d+px] ]
--
function p.extractCountry(frame)
local string= mw.ustring.toNFC (frame.args[1])
local match=nil;
match = mw.ustring.match(string, "Flag of ([^\.]*)")
if (match) then
return match
end
-- () for Cocos (Keeling) Islands
-- ' For People's
-- . for U.S. etc.
match = mw.ustring.match(string, "(%u[%a\(\)\.' -]+)")
if (match == "Image") then
string = mw.ustring.gsub(string, match, "")
match = mw.ustring.match(string, "[\|\[](%u[%a\(\)\.' -]+)")
end
if (match == "20px") then
string = mw.ustring.gsub(string, match, "")
match = mw.ustring.match(string, "\[(%u[%a\(\)\.' -]+)")
end
if (match) then
return match
end
return string
end
--[[
]]
function p.extractSubdivision(frame)
local string= mw.ustring.toNFC (frame.args[1])
local match=nil;
-- Needed for {{flag|Greenland}},
match = mw.ustring.match(string, "Flag of ([^\.]*)")
if (match) then
return match
end
-- . needed for Washington D.C.
-- ' for cote d'azur
-- leading ' for 'Aden
-- ‘ and trailing ' for Şan‘ā'
match = mw.ustring.match(string, "('?[%u][%a'‘ \.\,-]+[%a\.'\d]+)")
if (match) then
return match
end
return string
end
local countries = {
["Andorra"] = "AD",
["United Arab Emirates"] = "AE",
["UAE"] = "AE",
["Afghanistan"] = "AF",
["Antigua and Barbuda"] = "AG",
["Anguilla"] = "AI",
["Albania"] = "AL",
["Armenia"] = "AM",
["Angola"] = "AO",
["Antarctica"] = "AQ",
["Argentina"] = "AR",
["American Samoa"] = "AS",
["Austria"] = "AT",
["Australia"] = "AU",
["Aruba"] = "AW",
["Åland Islands"] = "AX",
["Aland Islands"] = "AX",
["Azerbaijan"] = "AZ",
["Nagorno-Karabakh"] = "AZ", -- disputed
["Nagorno-Karabakh Republic"] = "AZ", -- disputed
["Bosnia and Herzegovina"] = "BA",
["Bosnia"] = "BA",
["Barbados"] = "BB",
["Bangladesh"] = "BD",
["Belgium"] = "BE",
["Burkina Faso"] = "BF",
["Bulgaria"] = "BG",
["Bahrain"] = "BH",
["Burundi"] = "BI",
["Benin"] = "BJ",
["Saint Barthélemy"] = "BL",
["Saint Barthelemy"] = "BL",
["St. Barthélemy"] = "BL",
["St. Barthelemy"] = "BL",
["St Barthélemy"] = "BL",
["St Barthelemy"] = "BL",
["Bermuda"] = "BM",
["Brunei"] = "BN",
["Brunei Darussalam"] = "BN",
["Bolivia"] = "BO",
["Bolivia, Plurinational State of"] = "BO",
["Bonaire, Sint Eustatius and Saba"] = "BQ",
["Brazil"] = "BR",
["Bahamas"] = "BS",
["The Bahamas"] = "BS",
["the Bahamas"] = "BS",
["Bhutan"] = "BT",
["Bouvet Island"] = "BV",
["Botswana"] = "BW",
["Belarus"] = "BY",
["Belize"] = "BZ",
["Canada"] = "CA",
["Cocos (Keeling) Islands"] = "CC",
["Cocos Islands"] = "CC",
["Keeling Islands"] = "CC",
["Congo, the Democratic Republic of the"] = "CD",
["Democratic Republic of the Congo"] = "CD",
["DR Congo"] = "CD",
["Congo-Kinshasa"] = "CD",
["DROC"] = "CD",
["DRC"] = "CD",
["Central African Republic"] = "CF",
["CAR"] = "CF",
["Congo"] = "CG",
["Republic of the Congo"] = "CG",
["Congo Republic"] = "CG",
["Congo-Brazzaville"] = "CG",
["West Congo"] = "CG",
["Switzerland"] = "CH",
["Côte d'Ivoire"] = "CI",
["Ivory Coast"] = "CI",
["Cook Islands"] = "CK",
["Chile"] = "CL",
["Cameroon"] = "CM",
["China"] = "CN",
["PRC"] = "CN",
["People's Republic of China"] = "CN",
["Colombia"] = "CO",
["Costa Rica"] = "CR",
["Cuba"] = "CU",
["Cape Verde"] = "CV",
["Curaçao"] = "CW",
["Curacao"] = "CW",
["Christmas Island"] = "CX",
["Cyprus"] = "CY",
["Republic of Cyprus"] = "CY",
["Northern Cyprus"] = "CY", -- disputed
["Turkish Republic of Northern Cyprus"] = "CY", -- disputed
["Czech Republic"] = "CZ",
["Germany"] = "DE",
["Djibouti"] = "DJ",
["Denmark"] = "DK",
["Dominica"] = "DM",
["Dominican Republic"] = "DO",
["Algeria"] = "DZ",
["Ecuador"] = "EC",
["Estonia"] = "EE",
["Egypt"] = "EG",
["Western Sahara"] = "EH",
["Eritrea"] = "ER",
["Spain"] = "ES",
["Ethiopia"] = "ET",
["Finland"] = "FI",
["Fiji"] = "FJ",
["Falkland Islands (Malvinas)"] = "FK",
["Falklands"] = "FK",
["Falkland Islands"] = "FK",
["Malvinas"] = "FK",
["Malvinas Islands"] = "FK",
["Micronesia, Federated States of"] = "FM",
["Micronesia"] = "FM",
["Faroe Islands"] = "FO",
["France"] = "FR",
["Gabon"] = "GA",
["United Kingdom"] = "GB",
["the United Kingdom"] = "GB",
["U. K."] = "GB",
["U.K."] = "GB",
["the U.K."] = "GB",
["UK"] = "GB",
["the UK"] = "GB",
["Great Britain"] = "GB",
["England"] = "GB-ENG",
["Scotland"] = "GB-SCT",
["Wales"] = "GB-WLS",
["Northern Ireland"] = "GB-NIR",
["England and Wales"] = "GB-EAW",
["Grenada"] = "GD",
["Georgia"] = "GE",
["South Ossetia"] = "GE", -- disputed
["Tskhinvali Region"] = "GE", -- disputed
["Abkhazia"] = "GE-AB", -- disputed
["Republic of Abkhazia"] = "GE-AB", -- disputed
["French Guiana"] = "GF",
["Guernsey"] = "GG",
["Ghana"] = "GH",
["Gibraltar"] = "GI",
["Greenland"] = "GL",
["Gambia"] = "GM",
["Guinea"] = "GN",
["Guadeloupe"] = "GP",
["Equatorial Guinea"] = "GQ",
["Greece"] = "GR",
["South Georgia and the South Sandwich Islands"] = "GS",
["Guatemala"] = "GT",
["Guam"] = "GU",
["Guinea-Bissau"] = "GW",
["Guyana"] = "GY",
["Hong Kong"] = "HK",
["Heard Island and McDonald Islands"] = "HM",
["Heard and McDonald Islands"] = "HM",
["Honduras"] = "HN",
["Croatia"] = "HR",
["Haiti"] = "HT",
["Hungary"] = "HU",
["Indonesia"] = "ID",
["Ireland"] = "IE",
["Israel"] = "IL",
["Isle of Man"] = "IM",
["India"] = "IN",
["British Indian Ocean Territory"] = "IO",
["Iraq"] = "IQ",
["Iran, Islamic Republic of"] = "IR",
["Iran"] = "IR",
["Iceland"] = "IS",
["Italy"] = "IT",
["Jersey"] = "JE",
["Jamaica"] = "JM",
["Jordan"] = "JO",
["Japan"] = "JP",
["Kenya"] = "KE",
["Kyrgyzstan"] = "KG",
["Cambodia"] = "KH",
["Kiribati"] = "KI",
["Comoros"] = "KM",
["The Comoros"] = "KM",
["the Comoros"] = "KM",
["Saint Kitts and Nevis"] = "KN",
["St. Kitts and Nevis"] = "KN",
["St Kitts and Nevis"] = "KN",
["Korea, Democratic People's Republic of"] = "KP",
["Democratic People's Republic of Korea"] = "KP",
["North Korea"] = "KP",
["Korea, Republic of"] = "KR",
["Republic of Korea"] = "KR",
["South Korea"] = "KR",
["Kuwait"] = "KW",
["Cayman Islands"] = "KY",
["The Cayman Islands"] = "KY",
["the Cayman Islands"] = "KY",
["Kazakhstan"] = "KZ",
["Lao People's Democratic Republic"] = "LA",
["Laos"] = "LA",
["Lao"] = "LA",
["Lebanon"] = "LB",
["Saint Lucia"] = "LC",
["St. Lucia"] = "LC",
["St Lucia"] = "LC",
["Liechtenstein"] = "LI",
["Sri Lanka"] = "LK",
["Liberia"] = "LR",
["Lesotho"] = "LS",
["Lithuania"] = "LT",
["Luxembourg"] = "LU",
["Latvia"] = "LV",
["Libyan Arab Jamahiriya"] = "LY",
["Libya"] = "LY",
["Morocco"] = "MA",
["Monaco"] = "MC",
["Moldova, Republic of"] = "MD",
["Moldova"] = "MD",
["Transnistria"] = "MD", -- disputed
["Montenegro"] = "ME",
["Saint Martin (French part)"] = "MF",
["Saint Martin (France)"] = "MF",
["Collectivity of Saint Martin"] = "MF",
["Collectivity of St. Martin"] = "MF",
["Collectivity of St Martin"] = "MF",
["Saint-Martin"] = "MF",
["Madagascar"] = "MG",
["Marshall Islands"] = "MH",
["Macedonia"] = "MK",
["Mali"] = "ML",
["Myanmar"] = "MM",
["Burma"] = "MM",
["Mongolia"] = "MN",
["Macau"] = "MO",
["Macao"] = "MO",
["Northern Mariana Islands"] = "MP",
["Martinique"] = "MQ",
["Mauritania"] = "MR",
["Montserrat"] = "MS",
["Malta"] = "MT",
["Mauritius"] = "MU",
["Maldives"] = "MV",
["Malawi"] = "MW",
["Mexico"] = "MX",
["Malaysia"] = "MY",
["Mozambique"] = "MZ",
["Namibia"] = "NA",
["New Caledonia"] = "NC",
["Niger"] = "NE",
["Norfolk Island"] = "NF",
["Nigeria"] = "NG",
["Nicaragua"] = "NI",
["Netherlands"] = "NL",
["The Netherlands"] = "NL",
["the Netherlands"] = "NL",
["Norway"] = "NO",
["Nepal"] = "NP",
["Nauru"] = "NR",
["Niue"] = "NU",
["New Zealand"] = "NZ",
["Aotearoa"] = "NZ",
["Oman"] = "OM",
["Panama"] = "PA",
["Peru"] = "PE",
["French Polynesia"] = "PF",
["Papua New Guinea"] = "PG",
["Philippines"] = "PH",
["The Philippines"] = "PH",
["the Philippines"] = "PH",
["Pakistan"] = "PK",
["Poland"] = "PL",
["Saint Pierre and Miquelon"] = "PM",
["St. Pierre and Miquelon"] = "PM",
["St Pierre and Miquelon"] = "PM",
["Pitcairn"] = "PN",
["Puerto Rico"] = "PR",
["State of Palestine"] = "PS",
["Palestine"] = "PS",
["Portugal"] = "PT",
["Palau"] = "PW",
["Paraguay"] = "PY",
["Qatar"] = "QA",
["Réunion"] = "RE",
["Reunion"] = "RE",
["Romania"] = "RO",
["Serbia"] = "RS",
["Kosovo"] = "RS", -- disputed
["Russian Federation"] = "RU",
["Russia"] = "RU",
["Rwanda"] = "RW",
["Saudi Arabia"] = "SA",
["Solomon Islands"] = "SB",
["Seychelles"] = "SC",
["Sudan"] = "SD",
["Sweden"] = "SE",
["Singapore"] = "SG",
["Saint Helena, Ascension and Tristan da Cunha"] = "SH",
["Slovenia"] = "SI",
["Svalbard and Jan Mayen"] = "SJ",
["Slovakia"] = "SK",
["Sierra Leone"] = "SL",
["San Marino"] = "SM",
["Senegal"] = "SN",
["Somalia"] = "SO",
["Somaliland"] = "SO", -- disputed
["Suriname"] = "SR",
["South Sudan"] = "SS",
["São Tomé and Príncipe"] = "ST",
["Sao Tome and Principe"] = "ST",
["El Salvador"] = "SV",
["Sint Maarten"] = "SX",
["Saint Martin (Dutch part)"] = "SX",
["Saint Martin (Netherlands)"] = "SX",
["Syrian Arab Republic"] = "SY",
["Syria"] = "SY",
["Swaziland"] = "SZ",
["Turks and Caicos Islands"] = "TC",
["Chad"] = "TD",
["French Southern Territories"] = "TF",
["Togo"] = "TG",
["Thailand"] = "TH",
["Tajikistan"] = "TJ",
["Tokelau"] = "TK",
["Timor-Leste"] = "TL",
["East Timor"] = "TL",
["Turkmenistan"] = "TM",
["Tunisia"] = "TN",
["Tonga"] = "TO",
["Turkey"] = "TR",
["Trinidad and Tobago"] = "TT",
["Tuvalu"] = "TV",
["Taiwan"] = "TW",
["Republic of China"] = "TW",
["Tanzania, United Republic of"] = "TZ",
["Tanzania"] = "TZ",
["Ukraine"] = "UA",
["The Ukraine"] = "UA",
["the Ukraine"] = "UA",
["Uganda"] = "UG",
["United States Minor Outlying Islands"] = "UM",
["United States"] = "US",
["the United States"] = "US",
["United States of America"] = "US",
["the United States of America"] = "US",
["U. S."] = "US",
["U.S."] = "US",
["the U.S."] = "US",
["US"] = "US",
["the US"] = "US",
["Uruguay"] = "UY",
["Uzbekistan"] = "UZ",
["Holy See (Vatican City State)"] = "VA",
["Holy See"] = "VA",
["Vatican City State"] = "VA",
["Vatican City"] = "VA",
["Saint Vincent and the Grenadines"] = "VC",
["St. Vincent and the Grenadines"] = "VC",
["St Vincent and the Grenadines"] = "VC",
["Venezuela, Bolivarian Republic of"] = "VE",
["Venezuela"] = "VE",
["Virgin Islands, British"] = "VG",
["British Virgin Islands"] = "VG",
["UK Virgin Islands"] = "VG",
["Virgin Islands of the United Kingdom"] = "VG",
["Virgin Islands of the UK"] = "VG",
["Virgin Islands, U. S."] = "VI",
["Virgin Islands, U.S."] = "VI",
["Virgin Islands, US"] = "VI",
["United States Virgin Islands"] = "VI",
["American Virgin Islands"] = "VI",
["U. S. Virgin Islands"] = "VI",
["U.S. Virgin Islands"] = "VI",
["US Virgin Islands"] = "VI",
["Virgin Islands of the United States"] = "VI",
["Virgin Islands of the U.S."] = "VI",
["Virgin Islands of the US"] = "VI",
["Vietnam"] = "VN",
["Viet Nam"] = "VN",
["Vanuatu"] = "VU",
["Wallis and Futuna"] = "WF",
["Samoa"] = "WS",
["Yemen"] = "YE",
["Mayotte"] = "YT",
["South Africa"] = "ZA",
["Zambia"] = "ZM",
["Zimbabwe"] = "ZW",
["ABW"] = "AW",
["AFG"] = "AF",
["AGO"] = "AO",
["AIA"] = "AI",
["ALA"] = "AX",
["ALB"] = "AL",
["AND"] = "AD",
["ARE"] = "AE",
["ARG"] = "AR",
["ARM"] = "AM",
["ASM"] = "AS",
["ATA"] = "AQ",
["ATF"] = "TF",
["ATG"] = "AG",
["AUS"] = "AU",
["AUT"] = "AT",
["AZE"] = "AZ",
["BDI"] = "BI",
["BEL"] = "BE",
["BEN"] = "BJ",
["BFA"] = "BF",
["BGD"] = "BD",
["BGR"] = "BG",
["BHR"] = "BH",
["BHS"] = "BS",
["BIH"] = "BA",
["BLM"] = "BL",
["BLR"] = "BY",
["BLZ"] = "BZ",
["BMU"] = "BM",
["BOL"] = "BO",
["BRA"] = "BR",
["BRB"] = "BB",
["BRN"] = "BN",
["BTN"] = "BT",
["BVT"] = "BV",
["BWA"] = "BW",
["CAF"] = "CF",
["CAN"] = "CA",
["CCK"] = "CC",
["CHE"] = "CH",
["CHL"] = "CL",
["CHN"] = "CN",
["CIV"] = "CI",
["CMR"] = "CM",
["COD"] = "CG",
["COG"] = "CG",
["COK"] = "CK",
["COL"] = "CO",
["COM"] = "KM",
["CRI"] = "CR",
["CUB"] = "CU",
["CUW"] = "CW",
["CXR"] = "CX",
["CYM"] = "KY",
["CYP"] = "CY",
["CZE"] = "CZ",
["DEU"] = "DE",
["DJI"] = "DJ",
["DMA"] = "DM",
["DNK"] = "DK",
["DOM"] = "DO",
["DZA"] = "DZ",
["ECU"] = "EC",
["EGY"] = "EG",
["ERI"] = "ER",
["ESH"] = "EH",
["ESP"] = "ES",
["EST"] = "EE",
["ETH"] = "ET",
["FIN"] = "FI",
["FJI"] = "FJ",
["FLK"] = "FK",
["FRA"] = "FR",
["FRO"] = "FO",
["FSM"] = "FM",
["GAB"] = "GA",
["GBR"] = "GB",
["GEO"] = "GE",
["GGY"] = "GG",
["GHA"] = "GH",
["GIB"] = "GI",
["GIN"] = "GN",
["GLP"] = "GP",
["GMB"] = "GM",
["GNB"] = "GW",
["GNQ"] = "GQ",
["GRC"] = "GR",
["GRD"] = "GD",
["GRL"] = "GL",
["GTM"] = "GT",
["GUF"] = "GF",
["GUM"] = "GU",
["GUY"] = "GY",
["HKG"] = "HK",
["HMD"] = "HM",
["HND"] = "HN",
["HRV"] = "HR",
["HTI"] = "HT",
["HUN"] = "HU",
["IDN"] = "ID",
["IMN"] = "IM",
["IND"] = "IN",
["IOT"] = "IO",
["IRL"] = "IE",
["IRN"] = "IR",
["IRQ"] = "IQ",
["ISL"] = "IS",
["ISR"] = "IL",
["ITA"] = "IT",
["JAM"] = "JM",
["JEY"] = "JE",
["JOR"] = "JO",
["JPN"] = "JP",
["KAZ"] = "KZ",
["KEN"] = "KE",
["KGZ"] = "KG",
["KHM"] = "KH",
["KIR"] = "KI",
["KNA"] = "KN",
["KWT"] = "KW",
["LAO"] = "LA",
["LBN"] = "LB",
["LBR"] = "LR",
["LBY"] = "LY",
["LCA"] = "LC",
["LIE"] = "LI",
["LKA"] = "LK",
["LSO"] = "LS",
["LTU"] = "LT",
["LUX"] = "LU",
["LVA"] = "LV",
["MAC"] = "MO",
["MAF"] = "MF",
["MAR"] = "MA",
["MCO"] = "MC",
["MDA"] = "MD",
["MDG"] = "MG",
["MDV"] = "MV",
["MEX"] = "MX",
["MHL"] = "MH",
["MKD"] = "MK",
["MLI"] = "ML",
["MLT"] = "MT",
["MMR"] = "MM",
["MNE"] = "ME",
["MNG"] = "MN",
["MNP"] = "MP",
["MOZ"] = "MZ",
["MRT"] = "MR",
["MSR"] = "MS",
["MTQ"] = "MQ",
["MUS"] = "MU",
["MWI"] = "MW",
["MYS"] = "MY",
["MYT"] = "YT",
["NAM"] = "NA",
["NCL"] = "NC",
["NER"] = "NE",
["NFK"] = "NF",
["NGA"] = "NG",
["NIC"] = "NI",
["NIU"] = "NU",
["NLD"] = "NL",
["NOR"] = "NO",
["NPL"] = "NP",
["NRU"] = "NR",
["NZL"] = "NZ",
["OMN"] = "OM",
["PAK"] = "PK",
["PAN"] = "PA",
["PCN"] = "PN",
["PER"] = "PE",
["PHL"] = "PH",
["PLW"] = "PW",
["PNG"] = "PG",
["POL"] = "PL",
["PRI"] = "PR",
["PRT"] = "PT",
["PRY"] = "PY",
["PSE"] = "PS",
["PYF"] = "PF",
["QAT"] = "QA",
["REU"] = "RE",
["ROU"] = "RO",
["RUS"] = "RU",
["RWA"] = "RW",
["SAU"] = "SA",
["SDN"] = "SD",
["SEN"] = "SN",
["SGP"] = "SG",
["SGS"] = "GS",
["SJM"] = "SJ",
["SLB"] = "SB",
["SLE"] = "SL",
["SLV"] = "SV",
["SMR"] = "SM",
["SOM"] = "SO",
["SPM"] = "PM",
["SRB"] = "RS",
["SSD"] = "SS",
["STP"] = "ST",
["SUR"] = "SR",
["SVK"] = "SK",
["SVN"] = "SI",
["SWE"] = "SE",
["SWZ"] = "SZ",
["SXM"] = "SX",
["SYC"] = "SC",
["SYR"] = "SY",
["TCA"] = "TC",
["TCD"] = "TD",
["TGO"] = "TG",
["THA"] = "TH",
["TJK"] = "TJ",
["TKL"] = "TK",
["TKM"] = "TM",
["TLS"] = "TL",
["TON"] = "TO",
["TTO"] = "TT",
["TUN"] = "TN",
["TUR"] = "TR",
["TUV"] = "TV",
["TWN"] = "TW",
["TZA"] = "TZ",
["UGA"] = "UG",
["UKR"] = "UA",
["UMI"] = "UM",
["URY"] = "UY",
["USA"] = "US",
["UZB"] = "UZ",
["VAT"] = "VA",
["VCT"] = "VC",
["VEN"] = "VE",
["VNM"] = "VN",
["VUT"] = "VU",
["WLF"] = "WF",
["WSM"] = "WS",
["YEM"] = "YE",
["ZAF"] = "ZA",
["ZMB"] = "ZM",
["ZWE"] = "ZW"
}
function p.main(frame)
local country = mw.ustring.gsub(mw.ustring.toNFC(frame.args[1] or ''), '^%s*(.-)%s*$', '%1')
local match1 = ''
if country and country ~= '' then
match1 = mw.ustring.match(country, "Flag of the ([^\.]*)") or mw.ustring.match(country, "Flag of ([^\.]*)") or mw.ustring.match(country, "^[Tt]he %A*(%u[%a%(%)%.' %-]+)") or mw.ustring.match(country, "(%u[%a%(%)%.' %-]+)") or ""
if (match1 == "Image") or (match1 == "File") then
country = mw.ustring.gsub(country, match1, "")
match1 = mw.ustring.match(country, "[%|%[](%u[%a%(%)%.' %-]+)") or ""
end
if mw.ustring.match(match1, "^%d*x?%d+px$") then
country = mw.ustring.gsub(country, match1, "")
match1 = mw.ustring.match(country, "%[(%u[%a%(%)%.' %-]+)") or ""
end
end
local code = countries[match1] or countries[mw.ustring.gsub(match1, " %(.*%)$", "")] or countries[mw.ustring.gsub(match1, ",.*$", "")] or countries[mw.ustring.gsub(match1, " %(.*$", "")]
if not code then
if match1 ~= '' and mw.title.new('Template:ISO 3166 code ' .. match1).exists then
code = frame:expandTemplate{ title = 'Template:ISO 3166 code ' .. match1 }
else
if frame.args.nocat and frame.args.nocat == 'true' then
return ''
end
local ns = mw.title.getCurrentTitle().namespace
if ns == 0 then
return '[[ವರ್ಗ:Wikipedia page with obscure country]]'
else
return '[[ವರ್ಗ:Wikipedia page with obscure country|'.. frame:expandTemplate{ title = 'Namespace Greek' } ..']]'
end
end
end
local subdivision = mw.ustring.gsub(mw.ustring.toNFC(frame.args[2] or ''), '^%s*(.-)%s*$', '%1')
if not subdivision or subdivision == '' then return code end
local countrytables = {
["AD"] = true,
["AE"] = true,
["AF"] = true,
["AG"] = true,
["AL"] = true,
["AM"] = true,
["AO"] = true,
["AR"] = true,
["AT"] = true,
["AU"] = true,
["AZ"] = true,
["BA"] = true,
["BB"] = true,
["BD"] = true,
["BE"] = true,
["BF"] = true,
["BG"] = true,
["BH"] = true,
["BI"] = true,
["BJ"] = true,
["BN"] = true,
["BO"] = true,
["BQ"] = true,
["BR"] = true,
["BS"] = true,
["BT"] = true,
["BW"] = true,
["BY"] = true,
["BZ"] = true,
["CA"] = true,
["CD"] = true,
["CF"] = true,
["CG"] = true,
["CH"] = true,
["CI"] = true,
["CL"] = true,
["CM"] = true,
["CN"] = true,
["CO"] = true,
["CR"] = true,
["CU"] = true,
["CV"] = true,
["CY"] = true,
["CZ"] = true,
["DE"] = true,
["DJ"] = true,
["DK"] = true,
["DM"] = true,
["DO"] = true,
["DZ"] = true,
["EC"] = true,
["EE"] = true,
["EG"] = true,
["ER"] = true,
["ES"] = true,
["ET"] = true,
["FI"] = true,
["FJ"] = true,
["FM"] = true,
["FR"] = true,
["GA"] = true,
["GB"] = true,
["GD"] = true,
["GE"] = true,
["GH"] = true,
["GL"] = true,
["GM"] = true,
["GN"] = true,
["GQ"] = true,
["GR"] = true,
["GT"] = true,
["GW"] = true,
["GY"] = true,
["HN"] = true,
["HR"] = true,
["HT"] = true,
["HU"] = true,
["ID"] = true,
["IE"] = true,
["IL"] = true,
["IN"] = true,
["IQ"] = true,
["IR"] = true,
["IS"] = true,
["IT"] = true,
["JM"] = true,
["JO"] = true,
["JP"] = true,
["KE"] = true,
["KG"] = true,
["KH"] = true,
["KI"] = true,
["KM"] = true,
["KN"] = true,
["KP"] = true,
["KR"] = true,
["KW"] = true,
["KZ"] = true,
["LA"] = true,
["LB"] = true,
["LC"] = true,
["LI"] = true,
["LK"] = true,
["LR"] = true,
["LS"] = true,
["LT"] = true,
["LU"] = true,
["LV"] = true,
["LY"] = true,
["MA"] = true,
["MC"] = true,
["MD"] = true,
["ME"] = true,
["MG"] = true,
["MH"] = true,
["MK"] = true,
["ML"] = true,
["MM"] = true,
["MN"] = true,
["MR"] = true,
["MT"] = true,
["MU"] = true,
["MV"] = true,
["MW"] = true,
["MX"] = true,
["MY"] = true,
["MZ"] = true,
["NA"] = true,
["NE"] = true,
["NG"] = true,
["NI"] = true,
["NL"] = true,
["NO"] = true,
["NP"] = true,
["NR"] = true,
["NZ"] = true,
["OM"] = true,
["PA"] = true,
["PE"] = true,
["PG"] = true,
["PH"] = true,
["PK"] = true,
["PL"] = true,
["PS"] = true,
["PT"] = true,
["PW"] = true,
["PY"] = true,
["QA"] = true,
["RO"] = true,
["RS"] = true,
["RU"] = true,
["RW"] = true,
["SA"] = true,
["SB"] = true,
["SC"] = true,
["SD"] = true,
["SE"] = true,
["SG"] = true,
["SH"] = true,
["SI"] = true,
["SK"] = true,
["SL"] = true,
["SM"] = true,
["SN"] = true,
["SO"] = true,
["SR"] = true,
["SS"] = true,
["ST"] = true,
["SV"] = true,
["SY"] = true,
["SZ"] = true,
["TD"] = true,
["TG"] = true,
["TH"] = true,
["TJ"] = true,
["TL"] = true,
["TM"] = true,
["TN"] = true,
["TO"] = true,
["TR"] = true,
["TT"] = true,
["TV"] = true,
["TW"] = true,
["TZ"] = true,
["UA"] = true,
["UG"] = true,
["UM"] = true,
["US"] = true,
["UY"] = true,
["UZ"] = true,
["VC"] = true,
["VE"] = true,
["VN"] = true,
["VU"] = true,
["WF"] = true,
["WS"] = true,
["YE"] = true,
["ZA"] = true,
["ZM"] = true,
["ZW"] = true,
}
local match2 = mw.ustring.match(subdivision, "Flag of the ([^\.]*)") or mw.ustring.match(subdivision, "Flag of ([^\.]*)") or mw.ustring.match(subdivision, "[Tt]he %A*([ǁ'‘ʻ]?%u[%aZ̧z̄'‘‘ %.%,%-]+[%a%.'%d]+)") or mw.ustring.match(subdivision, "([ǁ'‘ʻ]?%u[%aZ̧z̄'‘‘ %.%,%-]+[%a%.'%d]+)") or ""
if (match2 == "Image") or (match2 == "File") then
subdivision = mw.ustring.gsub(subdivision, match2, "")
match2 = mw.ustring.match(subdivision, "[\|\[]([ǁ'‘ʻ]?%u[%aZ̧z̄'‘ʻ %.%,%-]+[%a%.'%d]+)") or ""
end
if mw.ustring.match(match2, "^%d*x?%d+px$") then
subdivision = mw.ustring.gsub(subdivision, match2, "")
match2 = mw.ustring.match2(subdivision, "%[([ǁ'‘ʻ]?%u[%aZ̧z̄'‘ʻ %.%,%-]+[%a%.'%d]+)") or ""
end
local code1 = mw.ustring.sub(code, 1, 2)
if countrytables[code1] then
local tmp = mw.loadData('Module:Country extract/' .. code1)
local code2 = tmp[match2] or tmp[mw.ustring.gsub(match2, " %(.*%)$", "")] or tmp[mw.ustring.gsub(match2, ",.*$", "")] or tmp[mw.ustring.gsub(match2, " %(.*$", "")]
if code2 then return code2 end
local legacytemplate = 'Template:ISO 3166 code ' .. match1
if mw.title.new(legacytemplate).exists then
tmp = nil
for k, v in ipairs({
frame:expandTemplate{ title = legacytemplate, args = { mw.ustring.gsub(match2, " %(.*%)$", "") } },
frame:expandTemplate{ title = legacytemplate, args = { mw.ustring.gsub(match2, ",.*$", "") } },
frame:expandTemplate{ title = legacytemplate, args = { mw.ustring.gsub(match2, " %(.*$", "") } },
frame:expandTemplate{ title = legacytemplate, args = { match2 } }
}) do
if v ~= code and v ~= '' then
tmp = v
break
end
end
if tmp then return tmp end
end
if frame.args.nocat and frame.args.nocat == 'true' then
return code
end
local ns = mw.title.getCurrentTitle().namespace
if ns == 0 then
return code .. '[[ವರ್ಗ:Wikipedia page with obscure country or subdivision]]'
else
return code .. '[[ವರ್ಗ:Wikipedia page with obscure country or subdivision|'.. frame:expandTemplate{ title = 'Namespace Greek' } ..']]'
end
end
return code
end
return p