local p = {}
local arguments = {
{'Canada'},
{'United States'},
{'The United States of America'},
{'US'},
{'US', 'New York'},
{'USA', 'New York'},
{'US-New York'},
{'USA-New York'},
{'US-NY'},
{'USA-NY'},
{'United States', 'New York'},
{'United States', 'New York (State)'},
{'United States', '[[New York (State)]]'},
{'United States', '[[New York (State)|Test]]'},
{'Guinea-Bissau'},
{'Guinea-Bissau-L'},
{'Guinea-Bissau', 'L'},
{'United-States'},
{'United States-New-York'},
{'GuineaBissau'},
{'GuineaBissau-L'},
{'GuineaBissau', 'L'},
{'GB-ENG'},
{'GB-ENG-Greenwich'},
{'GB-ENG', 'Greenwich'},
{'Wales-Belfast'},
{'Northern Ireland-Belfast'},
{'UK-Stoke-on-Trent'},
{'GB-ENG-Stoke-on-Trent'},
{'UK', 'Stoke-on-Trent'},
{'UK', 'Stoke on Trent'},
{'[[United States|THE PLACE]]'},
{'[[File:Flag_of_Canada.svg|20px]]'},
{'{{flag|India}}'},
{'{{CAN}}'},
{[[C"A'NA‘DA(AAA)']]},
{'Canada-'},
{'-Canada-'},
{'-Canada'},
{'Taiwan, Province of China'},
{'Taiwan'},
{'Republic of China'},
{'Republic of China', isoname='yes'},
{'TW'},
{'TWN'},
{'158'},
{'20'},
{'{{PRC}}'},
{'[ [Canada ] ]'},
{'Áfghanistan'},
{'United States<ref name=A>{{cite web|url=http://www.example.com}}</ref>'},
{'United States<ref name="B" />'},
{'[[Russia]]', '[[Sakha Republic]]'},
{'CA', 'BC', lang='fr'},
}
local function stripOnly(params, special)
local code = (special == 'code' and '<td><code><nowiki>' or '<td>')
if params[1] then
code = code..(special == 'sandbox' and '{{#invoke:ISO 3166/sandbox' or '{{#invoke:ISO 3166')..'|strip'..'|'..params[1]..'}}'
end
if params[2] then
code = code..' '..(special == 'sandbox' and '{{#invoke:ISO 3166/sandbox' or '{{#invoke:ISO 3166')..'|strip'..'|'..params[2]..'}}'
end
return code..(special == 'code' and '</nowiki></code></td>' or '</td>')
end
local function makeCell(func, params, special)
if func == 'strip' then
return stripOnly(params, special)
end
local code = ''
code = code..(special == 'code' and '<td><code><nowiki>' or '<td>')..'{{'
code = code..(special == 'sandbox' and '#invoke:ISO 3166/sandbox' or '#invoke:ISO 3166')
code = code..'|'..func
for k,v in ipairs(params) do
code = code..'|'..v
end
for k,v in pairs(params) do
if type(k) ~= 'number' then
code = code..'|'..k..'='..v
end
end
code = code..'}}'..(special == 'code' and '</nowiki></code></td>' or '</td>')
return code
end
local function makeRow(frame, func, params)
local out = ''
out = out..makeCell(func, params) -- Live
out = out..makeCell(func, params, 'sandbox') -- Sandbox
out = out..makeCell(func, params, 'code') -- Code
return frame:preprocess('<tr>'..out..'</tr>')
end
function p.run(frame)
local out = '<tr><th>Live</th><th>Sandbox</th><th>Code</th></tr>'
for k,v in ipairs(arguments) do
out = out..makeRow(frame, frame.args[1], v)
end
return '<table class="wikitable">'..out..'</table>'
end
return p