Jump to content

Module:ISO 3166/data

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by SiBr4 (talk | contribs) at 22:37, 13 February 2016. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}

function p.subpagetest(frame)
--Returns a table cell indicating the existence of a data page (see [[User:SiBr4/sandbox#Data subpage test]])
local data = mw.loadData("Module:ISO 3166/data/National")
local code = frame.args[1]
local sdata
if not data[code] then
  return "" --Unassigned or reserved 3166-1 code
else
  local sname = "Module:ISO 3166/data/"..code
  if not (frame.args[2]=="1" or mw.title.new(sname).exists) then
    return "title=\""..data[code].name.."\" style=\"background:#fee;\"|[["..sname.."|-]]" --Data subpage doesn't exist
  else
    sdata = mw.loadData(sname)
  end
end
for _,_ in pairs(sdata) do
  return "title=\""..data[code].name.."\" style=\"background:#efe;\"|n" --Non-empty 3166-2 entry
end
return "title=\""..data[code].name.."\" style=\"background:#eef;\"|e" --Empty 3166-2 entry

end

function p.finddupes(frame)
--Search for names that are used multiple times

function testname(names,dnames,page,name)
  if name then
    if not names[name] then names[name] = true
    else dnames[#dnames+1] = page..": "..name
    end
  end
  return names, dnames
end
function testentry(names,dnames,page,edata)
  names, dnames = testname(names,dnames,page,edata.name)
  names, dnames = testname(names,dnames,page,edata.isoname)
  if edata.altnames then for _,name in ipairs(edata.altnames) do
    names, dnames = testname(names,dnames,page,name)
  end end
  return names, dnames
end

local dnames = {}

--ISO 3166-1
local data = mw.loadData("Module:ISO 3166/data/National")
local names = {}
for _,cdata in pairs(data) do
  names, dnames = testentry(names,dnames,"National",data)
end

--ISO 3166-2
for code,_ in pairs(data) do
  names = {}
  local spage = "Module:ISO 3166/data/"..code
  if mw.title.new(spage).exists then
    local sdata = mw.loadData(spage)
    for _,cdata in pairs(sdata) do
      names, dnames = testentry(names,dnames,code,sdata)
    end
  end
end

return table.concat(dnames,"\n")

end

return p