Module:ISO 3166/sandbox: Difference between revisions

Content deleted Content added
Move validity test to inside p.strip, unstripnowiki
Don't display script warnings if nocat is set to true
 
(21 intermediate revisions by the same user not shown)
Line 8:
local getArgs = require("Module:Arguments").getArgs
local data = mw.loadData("Module:ISO 3166/data/National/sandbox")
 
--[[----------E R R O R S----------]]-- -- Assign error categories and display warnings
local function errors(errType, args, code, alpha2)
localif catnocountry =not (args.nocat and args.nocat == 'true') and '' then
if not code1code then
local warningText = code .. ' ("%s") is not a recognized ' .. errType .. ' in [[ISO 3166-%s]] ([[Module:ISO 3166]]).'
if errType == 'country' then
mw.addWarning(string.format(warningText, args[1], '1'))
elseif errType == 'subdivision' and alpha2 then
mw.addWarning(string.format(warningText, args[2], '2:' .. alpha2))
end
end
orreturn mw.title.getCurrentTitle().namespace == 0 and ('[[Category:Wikipedia pagearticles with obscure ' .. errType .. 'subdivision]]') or ''
end
return ''
end
 
--[[----------F I N D N A M E----------]]-- -- Finds the name in the database
Line 56 ⟶ 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"]="",
}
text = mw.text.decode(text) -- Decode HTML entities (passed from wikidata?)
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 103 ⟶ 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 110 ⟶ 147:
local eot = args.error or ""
if code1 == "" then
local catnocountry = (args.nocat and args.nocat == 'true') and ''
local if catnocountry =not (args.nocat and args.nocat == 'true') and ''then
or '[[Category:Wikipedia page with obscure country]]'
mw.addWarning((args[1] ~= "" and ('Invalid parameter "' .. args[1] .. '"') or 'No parameter') ..
local catnosubdivision = (args.nocat and args.nocat == 'true') and ''
' for the country given ([[Module:ISO 3166]]).')
or '[[Category:Wikipedia page with obscure subdivision]]'
end
return catnocountryerrors('country', args), '<span style="font-size:100%" class="error">"No parameter for the country given"</span>'
if not code1 then
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry, '<span style="font-size:100%" class="error">"No parameter for the country given"</span>'
end
if not code2 == "" then --3166-1 code
for alpha2,cdata in pairs(data) do
if findname(alpha2,cdata,code1) then
Line 130 ⟶ 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 errors('country', args, code1)
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry
else --3166-2 code
for alpha2,cdata in pairs(data) do
Line 157 ⟶ 191:
return p.luacode(args)
end
return errors('subdivision', args, code2, alpha2)
if mw.title.getCurrentTitle().namespace ~= 0 then catnosubdivision = '' end
return catnosubdivision
end
end
if string.find(args[1] or '',"%-") then
args[1] = string.match(args[1] or '',"^([^%-]*)%-(.*)$")
return p.luacode(args)
end
return errors('country', args, code1)
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry
end
return errors('country', args, code1)
 
end
 
Line 197 ⟶ 229:
local code1 = p.luacode(args)
local code2 = ''
if string.find(code1,"%-") then
code1, code2 = string.match(code1,"^([^%-]*)%-(.*)$")
Line 208 ⟶ 240:
or (data[code1]["displayname"] or data[code1]["name"])
else
return errors('[[Category:Wikipedia page with obscure country]]', args)
end
else --3166-2 code
Line 215 ⟶ 247:
sdata = mw.loadData("Module:ISO 3166/data/"..code1)
else
return errors('[[Category:Wikipedia page with obscure country]]', args)
end
if sdata[code2] then
Line 221 ⟶ 253:
or (sdata[code2]["displayname"] or sdata[code2]["name"])
else
return errors('[[Category:Wikipedia page with obscure country]]', args)
end
end
Line 244 ⟶ 276:
local args = frame.args
local subdivisionqueried = false
local catnocountry = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure country]]'
local catnosubdivision = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure subdivision]]' or ''
local tracking = ''
local targs = {}
Line 267 ⟶ 295:
if region == '' then
region = p.luacode({country, nocat = 'true'})
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry, catnosubdivision = '', '' end
if region == '' then
tracking = tracking .. catnocountryerrors('country', args)
elseif subdivisionqueried == true then
tracking = tracking .. catnosubdivisionerrors('subdivision', args)
end
end