Module:Country
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Country/doc
--[[<pre> https://github.com/lukes/ISO-3166-Countries-with-Regional-Codes
Description : Gets data about a country, see format in Module:Country/data
Syntax :
{{#invoke:country|main|country-isocode|[name":"New Zealand/alpha-2/alpha-3/country-code
/sub-region-code/region-code/iso_3166-2/region/sub-region}}
{{#invoke:country|countrycode|china}}
* country-isocode (e.g. fr =="France")
]]--
local p = {}
local countryData = mw.loadData("Module:Country/data")
function p.main(frame)
local args = frame.args
if args then
local countryCode = args[1] or args.code
local info = args[2] or args.info
if countryCode and info then
return getCountryData(countryCode, info)
end
end
end
function p.countrycode(frame)
local args = frame.args
if args then
local countryCode = args[1] or args.name
if countryCode then
return getCountryCode(countryCode, args.match)
end
end
end
function getCountryData(code, info)
if info and code then
-- if the code doesn't exist try looking for a country name
if not countryData[code] then
code = getCountryCode(code)
end
return (countryData[code] or {})[info]
end
end
function getCountryCode(name, bCloseMatch)
name = name:lower()
for sCode, sData in pairs(countryData) do
if sData.name:lower() == name or bCloseMatch and sData.name:match(name) then
return sCode:lower()
end
end
end
return p