Module:ISO 3166: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
(Fixed catergories)
(Fixed error with flag handling)
Line 35: Line 35:
--[[----------I S O N A M E----------]]---- Find the ISO name of a country/region
--[[----------I S O N A M E----------]]---- Find the ISO name of a country/region


local function isoname(data,code,lang)
function isoname(data,code,lang)
if data[code]["isonames"] then
if data[code]["isonames"] then
local name = data[code]["isodisplaynames"] and data[code]["isodisplaynames"][lang]
local name = data[code]["isodisplaynames"] and data[code]["isodisplaynames"][lang]
Line 51: Line 51:
end
end


--[[----------P . S T R I P----------]]---- Removes junk from the input
--[[----------S T R I P----------]]---- Removes junk from the input


function p.strip(text)
function p.strip(text)
local match=nil;
local match=nil;
match = mw.ustring.match(text, "Flag of ([^\.]*)")
match = mw.ustring.match(text, "Flag of ([^\.]*)")
match = mw.ustring.match(text, "Flag ([^\.]*)")
if (match) then
if (match) then
return match
text = match
end
end
match = mw.ustring.match(text, "(%u[%a\(\)\.' -]+)")
match = mw.ustring.match(text, "(%u[%a\(\)\.' -]+)")
Line 88: Line 89:
return p.strip(args[1]) or ""
return p.strip(args[1]) or ""

end

--[[----------P . L U A N A M E---------]]---- Makes the ISO/common name of a country

function p.luaname(args)

local eot = args.error or ""
if not args[1] then
return cerror(eot,"No parameter given",args[2] or "")
end
local code1 = args[1] or ""; local code2 = args[2] or ""
if string.find(code1,"%-") then
code1, code2 = string.match(code1,"^([^%-]*)%-(.*)$")
end
local orig = code1..(code1 and code2 and "-" or "")..code2
code1 = string.upper(code1); code2 = string.upper(code2)
if --Check if valid code
--No non-alphanumeric characters allowed
string.find(code1..code2,"[^A-Z0-9]")
--3166-1 codes can be two or three letters or three digits;
--3166-2 codes must be two letters (first part) and 1-3 letters or digits (second part)
or not (string.find(code1,"^%u%u%u?$") or string.find(code1,"^%d%d%d$"))
or not string.find(code2,"^%w?%w?%w?$")
or not (string.find(code1,"^%u%u$") or code2=="")
then
if code2=="" then
return '[[Category:Wikipedia page with obscure country]]'
else
return '[[Category:Wikipedia page with obscure country or subdivision]]'
end
end
if string.find(code1,"^%u%u$") then
if code2=="" then
--3166-1 alpha-2 code
if data[code1] then
return (args.isoname or args.lang)
and isoname(data,code1,args.lang)
or (data[code1]["displayname"] or data[code1]["name"])
else
return '[[Category:Wikipedia page with obscure country]]'
end
else
--3166-2 code
local sdata
if data[code1] then
sdata = mw.loadData("Module:ISO 3166/data/"..code1)
else
return '[[Category:Wikipedia page with obscure country]]'
end
if sdata[code2] then
return (args.isoname or args.lang)
and isoname(sdata,code2,args.lang)
or (sdata[code2]["displayname"] or sdata[code2]["name"])
else
for _,_ in pairs(sdata) do
return '[[Category:Wikipedia page with obscure country]]'
end
return '[[Category:Wikipedia page with obscure country]]'
end
end
else
--3166-1 alpha-3 or numeric code
local codetype = string.find(code1,"%d") and "numeric" or "alpha3"
for alpha2,cdata in pairs(data) do
if cdata[codetype]==code1 then
return (args.isoname or args.lang)
and isoname(data,alpha2,args.lang)
or (cdata["displayname"] or cdata["name"])
end
end
return '[[Category:Wikipedia page with obscure country]]'
end
end

--[[----------P . N A M E---------]]---- Calls P.Luaname but using Module:Arguments

function p.name(frame)

return p.luaname(getArgs(frame)) or ""


end
end
Line 179: Line 95:


function p.luacode(args)
function p.luacode(args)
if args[1] then args[1] = p.strip(args[1]) end
if args[2] then args[2] = p.strip(args[2]) end


if args["codetype"]=="3" then
if args["codetype"]=="3" then
Line 187: Line 106:
if not args[1] then
if not args[1] then
return cerror(eot,"No parameter given",args[2] or "")
return '<span style="font-size:100%" class="error">"No parameter for the country given"</span>'
end
end
Line 245: Line 164:
return p.luacode(args) or ""
return p.luacode(args) or ""
end
--[[----------P . L U A N A M E---------]]---- Makes the ISO/common name of a country
function p.luaname(args)

local code1 = p.luacode(args)
local code2 = ''
if string.find(code1,"%-") then
code1, code2 = string.match(code1,"^([^%-]*)%-(.*)$")
end
if string.find(code1,"^%u%u$") then
if code2=="" then --3166-1 alpha-2 code
if data[code1] then
return (args.isoname or args.lang)
and isoname(data,code1,args.lang)
or (data[code1]["displayname"] or data[code1]["name"])
else
return '[[Category:Wikipedia page with obscure country]]'
end
else --3166-2 code
local sdata
if data[code1] then
sdata = mw.loadData("Module:ISO 3166/data/"..code1)
else
return '[[Category:Wikipedia page with obscure country]]'
end
if sdata[code2] then
return (args.isoname or args.lang)
and isoname(sdata,code2,args.lang)
or (sdata[code2]["displayname"] or sdata[code2]["name"])
else
return '[[Category:Wikipedia page with obscure country]]'
end
end
end
end

--[[----------P . N A M E---------]]---- Calls P.Luaname but using Module:Arguments

function p.name(frame)

return p.luaname(getArgs(frame)) or ""


end
end