Module:ISO 3166/sandbox: Difference between revisions

Content deleted Content added
move cat testing into separate function
Don't display script warnings if nocat is set to true
 
(16 intermediate revisions by the same user not shown)
Line 9:
local data = mw.loadData("Module:ISO 3166/data/National/sandbox")
 
--[[----------CE AR TR O R S----------]]-- -- Assign error categories and display warnings
local function catserrors(caterrType, args, code, alpha2)
if not (args.nocat and args.nocat == 'true') and mw.title.getCurrentTitle().namespace == 0 then
if cat == 'nocountry'code then
local warningText = code .. ' ("%s") is not a recognized ' .. errType .. ' in [[ISO 3166-%s]] ([[Module:ISO 3166]]).'
return '[[Category:Wikipedia page with obscure country]]'
elseif if caterrType == 'nosubdivisioncountry' then
mw.addWarning(string.format(warningText, args[1], '1'))
return '[[Category:Wikipedia articles with obscure subdivision]]'
elseif errType == 'subdivision' and alpha2 then
mw.addWarning(string.format(warningText, args[2], '2:' .. alpha2))
end
end
return mw.title.getCurrentTitle().namespace == 0 and ('[[Category:Wikipedia articles with obscure ' .. errType .. 'subdivision]]') or ''
end
return ''
Line 68 ⟶ 72:
if not text then return nil end
local accents = {["À"]="A",["Á"]="A",["Â"]="A",["Ã"]="A", -- accent list
["Ä"]="A",["Å"]="A",["ÇÆ"]="CAE",["ÈÇ"]="EC",["ÉÈ"]="E",
["ÊÉ"]="E",["ËÊ"]="E",["ÌË"]="IE",["ÍÌ"]="I",["ÎÍ"]="I",
["ÏÎ"]="I",["ÑÏ"]="NI",["ÒÐ"]="OD",["ÓÑ"]="ON",["ÔÒ"]="O",
["ÕÓ"]="O",["ÖÔ"]="O",["ØÕ"]="O",["ÙÖ"]="UO",["ÚØ"]="UO",
["Ù"]="U",["Ú"]="U",["Û"]="U",["Ü"]="U",["Ý"]="Y",
["Þ"]="TH",
["Ā"]="A",["Ă"]="A",["Ą"]="A",["Ć"]="C",["Č"]="C",
["Ĉ"]="C",["Ċ"]="C",["Ď"]="D",["Đ"]="D",["Ĕ"]="E",
["Ě"]="E",["Ė"]="E",["Ē"]="E",["Ę"]="E",["Ŋ"]="N",
["Ğ"]="G",["Ģ"]="G",["Ĝ"]="G",["Ġ"]="G",["Ĥ"]="H",
["Ħ"]="H",["Ĭ"]="I",["İ"]="I",["Ī"]="I",["Į"]="I",
["Ĩ"]="I",["IJ"]="IJ",["Ĵ"]="J",["Ķ"]="K",["Ĺ"]="L",
["Ľ"]="L",["Ļ"]="L",["Ŀ"]="L",["Ł"]="L",["Ń"]="N",
["Ň"]="N",["Ņ"]="N",["Ŏ"]="O",["Ő"]="O",["Ō"]="O",
["Œ"]="OE",["Ŕ"]="R",["Ř"]="R",["Ŗ"]="R",["Ś"]="S",
["Š"]="S",["Ş"]="S",["Ŝ"]="S",["Ť"]="T",["Ţ"]="T",
["Ŧ"]="T",["Ŭ"]="U",["Ű"]="U",["Ū"]="U",["Ų"]="U",
["Ů"]="U",["Ũ"]="U",["Ŵ"]="W",["Ŷ"]="Y",["Ÿ"]="Y",
["Ź"]="Z",["Ž"]="Z",["Ż"]="Z",
}
local remove = {"NATION OF","COUNTRY OF","TERRITORY OF", -- text to be removed list
"FLAG OF","FLAG","KINGDOM OF","STATE OF"," STATE ",
"PROVINCE OF","PROVINCE","TERRITORY","COUNTY","GOVERNORATE"
}
local patterns = {["(%a)%.(%a)%.",".+:"]="",["|.+"]="",["%(.-%)"]="", -- patterns to follow (order may matter)
["%.%S.*"]="",["^THE "]="",["%_"]=" ",["%-"]=," %d%d?%d?PX",
}
local replacements = {["(%a)%.(%a)%."]="%1%2", -- Replacements for patterns above (order does not matter)
[".+:"]="",["|.+"]="",["%(.-%)"]="",
["%.%S.*"]="",["^THE "]="",["%_"]=" ",["%-"]=" ",
["%d%d?%d?PX"]="",
}
Line 87 ⟶ 109:
text = mw.text.unstripNoWiki(text) -- Remove <nowiki> tags
text = mw.ustring.upper(text) -- Case insensitivity
text = mw.ustring.gsub(text,"[À-ÝŻ]",accents) -- Deaccent
for pattern_,valuepattern in pairsipairs(patterns) do -- Follow patterns
local value = replacements[pattern]
text = mw.ustring.gsub(text,pattern,value)
end
Line 116 ⟶ 139:
 
function p.luacode(args)
args[1], args[2] = args[1] or '', args[2] or ''
 
local code1 = p.strip(args[1])
local code2 = p.strip(args[2])
Line 124 ⟶ 147:
local eot = args.error or ""
if (code1 or "") == "" then
if not (args.nocat and args.nocat == 'true') then
return cats('nocountry', args), '<span style="font-size:100%" class="error">"No parameter for the country given"</span>'
mw.addWarning((args[1] ~= "" and ('Invalid parameter "' .. args[1] .. '"') or 'No parameter') ..
' for the country given ([[Module:ISO 3166]]).')
end
return catserrors('nocountrycountry', args), '<span style="font-size:100%" class="error">"No parameter for the country given"</span>'
end
if (code2 or "") == "" then --3166-1 code
for alpha2,cdata in pairs(data) do
if findname(alpha2,cdata,code1) then
Line 138 ⟶ 165:
end
end
if string.find(args[1] or '',"%-") then
args[1], args[2] = string.match(args[1] or '',"^([^%-]*)%-(.*)$")
if args[2] then return p.luacode(args) end
end
return catserrors('nocountrycountry', args, code1)
else --3166-2 code
for alpha2,cdata in pairs(data) do
Line 164 ⟶ 191:
return p.luacode(args)
end
return catserrors('nosubdivisionsubdivision', args, code2, alpha2)
end
end
if string.find(args[1] or '',"%-") then
args[1] = string.match(args[1] or '',"^([^%-]*)%-(.*)$")
return p.luacode(args)
end
return catserrors('nocountrycountry', args, code1)
end
return errors('country', args, code1)
 
end
 
Line 213 ⟶ 240:
or (data[code1]["displayname"] or data[code1]["name"])
else
return catserrors('nocountrycountry', args)
end
else --3166-2 code
Line 220 ⟶ 247:
sdata = mw.loadData("Module:ISO 3166/data/"..code1)
else
return catserrors('nocountrycountry', args)
end
if sdata[code2] then
Line 226 ⟶ 253:
or (sdata[code2]["displayname"] or sdata[code2]["name"])
else
return catserrors('nocountrycountry', args)
end
end
Line 269 ⟶ 296:
region = p.luacode({country, nocat = 'true'})
if region == '' then
tracking = tracking .. catserrors('nocountrycountry', args)
elseif subdivisionqueried == true then
tracking = tracking .. catserrors('nosubdivisionsubdivision', args)
end
end