پودمان:ISO 3166/data

از ویکی‌پدیا، دانشنامهٔ آزاد
توضیحات پودمان[نمایش] [ویرایش] [تاریخچه] [پاکسازی]

The subpages of this module contain the ISO 3166 codes used by Module:ISO 3166. This module itself is for maintenance/internal use and should not be used in articles.

Subpages

Problem reports

  • Duplicate name: "000" in /National (exact) (GB-SCT)
  • Duplicate name: "000" in /National (exact) (GB-NIR)
  • Duplicate name: "000" in /National (exact) (GB-EAW)
  • Duplicate name: "Saint Martin (French part)" in /National (non-exact) (MF)
  • Duplicate name: "St Martin (French part)" in /National (non-exact) (MF)
  • Duplicate name: "000" in /National (exact) (GB-WLS)
  • Duplicate name: "لاریوخا" in /ES (exact) (LO)
  • Duplicate name: "Karnali" in /NP (exact) (P6)
  • Duplicate name: "Province 5" in /NP (non-exact) (P5)
  • Duplicate name: "Province 5" in /NP (non-exact) (P5)
  • Duplicate name: "Gandaki" in /NP (exact) (P4)
  • Duplicate name: "Province 4" in /NP (non-exact) (P4)
  • Duplicate name: "Province 2" in /NP (non-exact) (P2)
  • Duplicate name: "Province 2" in /NP (non-exact) (P2)
  • Duplicate name: "Province 3" in /NP (non-exact) (P3)
  • Duplicate name: "Province 3" in /NP (non-exact) (P3)
  • Duplicate name: "Province 1" in /NP (non-exact) (P1)
  • Duplicate name: "Province 1" in /NP (non-exact) (P1)
  • Duplicate name: "بوکو" in /UG (exact) (220)
  • Duplicate name: "ناحیه بوکو" in /UG (exact) (220)
  • Duplicate name: "Viangchan (prefecture)" in /LA (non-exact) (VT)
  • Duplicate name: "صوفیه (شهر)" in /BG (non-exact) (22)
  • Duplicate name: "باریسال" in /BD (non-exact) (A)
  • Duplicate name: "داکا" in /BD (non-exact) (C)
  • Duplicate name: "کولنا" in /BD (non-exact) (D)
  • Duplicate name: "رنگ‌پور" in /BD (non-exact) (F)
  • Duplicate name: "سیلهت (ناحیه)" in /BD (non-exact) (60)
  • Duplicate name: "راج‌شاهی (ناحیه)" in /BD (non-exact) (54)
  • Duplicate name: "میمن‌سینگ" in /BD (exact) (34)
  • Duplicate name: "چیتاگونگ (ناحیه)" in /BD (non-exact) (10)
  • Duplicate name: "پاپوآ (منطقه)" in /ID (non-exact) (PP)
  • Duplicate name: "ملوک (منطقه)" in /ID (non-exact) (ML)
  • Duplicate name: "یاروا" in /EE (exact) (52)
  • Duplicate name: "وورو (شهرک)" in /EE (non-exact) (919)
  • Duplicate name: "Võru" in /EE (exact) (917)
  • Duplicate name: "والگا" in /EE (exact) (855)
  • Duplicate name: "تارتو" in /EE (exact) (793)
  • Duplicate name: "یوگوا" in /EE (exact) (50)
  • Duplicate name: "پولوا" in /EE (exact) (622)
  • Duplicate name: "پارنو" in /EE (exact) (68)
  • Duplicate name: "توری (پارنو)" in /EE (non-exact) (809)
  • Duplicate name: "ویلیاندی" in /EE (exact) (84)
  • Duplicate name: "والونی" in /BE (exact) (WAL)
  • Duplicate name: "نوربوتن" in /SE (exact) (BD)
  • Duplicate name: "Lima" in /PE (non-exact) (LIM)
  • Duplicate name: "ناتینگهام‌شر" in /GB (exact) (NGM)
  • Duplicate name: "Maputo Province" in /MZ (non-exact) (L)
  • Duplicate name: "اولوموتس" in /CZ (non-exact) (71)
  • Duplicate name: "کارلووی واری" in /CZ (non-exact) (41)
  • Duplicate name: "زلین (ناحیه)" in /CZ (non-exact) (724)
  • Duplicate name: "اوستی ناد لابم (ناحیه)" in /CZ (non-exact) (427)
  • Duplicate name: "لیبرتس (ناحیه)" in /CZ (non-exact) (513)
  • Duplicate name: "پاردوبیتسه (ناحیه)" in /CZ (non-exact) (532)
  • Duplicate name: "هرادتس کرالووه (ناحیه)" in /CZ (non-exact) (521)
  • Duplicate name: "کیندیا" in /GN (exact) (DU)
  • Duplicate name: "مایوت" in /FR (non-exact) (976)
  • Duplicate name: "گوادلوپ" in /FR (non-exact) (971)
  • Duplicate name: "گویان فرانسه" in /FR (exact) (973)
  • Duplicate name: "Guyane (française)" in /FR (exact) (973)
  • Duplicate name: "مارتینیک" in /FR (exact) (972)
  • Duplicate name: "رئونیون" in /FR (non-exact) (974)
  • Duplicate name: "La Réunion" in /FR (exact) (974)
  • Duplicate name: "او-رن" in /FR (non-exact) (68)
  • Duplicate name: "ان (اوورنی-رون-آلپ)" in /FR (non-exact) (01)
  • Duplicate name: "Lənkəran" in /AZ (non-exact) (LA)
  • Duplicate name: "نخجوان" in /AZ (exact) (NV)
  • Duplicate name: "Naxçıvan (city)" in /AZ (non-exact) (NV)
  • Duplicate name: "Yevlax" in /AZ (non-exact) (YE)
  • Duplicate name: "Şəki (rayon)" in /AZ (non-exact) (SAK)

local p = {}

local data = mw.loadData("Module:ISO 3166/data/National")

function p.list(frame)
--Returns a list of subpages and associated countries
local codes = {}
for alpha2,cdata in pairs(data) do
  codes[#codes+1] = {alpha2,cdata.name}
end
table.sort(codes, function(t1,t2) return t1[1]<t2[1] end)

local out = {"* [[Module:ISO 3166/data/National|National]]"}
for _,cdata in ipairs(codes) do
  out[#out+1] = "* [[Module:ISO 3166/data/"..cdata[1].."|"..cdata[1].." ("..cdata[2]..")]]"
end
return table.concat(out,"\n")

end

function p.subpagetest(frame)
--Returns a table row indicating the existence of data pages (see [[User:SiBr4/sandbox#Data subpage test]])

local function cell(code,d)
  local sdata
  if not data[code] then
    return "" --Unassigned or reserved 3166-1 code
  else
    local sname = "Module:ISO 3166/data/"..code
    if not (d 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

local letter = frame.args[1]
local out = "|-\n!"..letter.."*"
for i = 65, 90 do
  out = out.."\n|"..cell(letter..string.char(i),frame.args[2])
end
return out

end

function p.testall(frame)
--Search across all subpages for problems with names

local strip = require("Module:ISO 3166").strip

local function subpage(p)
  return "[[Module:ISO 3166/data/"..p.."|/"..p.."]]"
end
local function testname(names,inames,dnames,page,code,name)
  if name then
  	if type(name)~="string" then
  	  dnames[#dnames+1] = "*Unexpected non-string value in "..subpage(page).." ("..code..")"
  	else
      local sname = strip(name)
      if not names[sname] then
        inames[sname] = name
      else
        dnames[#dnames+1] = "*Duplicate name: \""..name.."\" in "..subpage(page)
                            ..(names[sname]==name and " (exact)" or " (non-exact)").." ("..code..")"
      end
    end
  end
  return names, inames, dnames
end
local function testnametable(names,inames,dnames,page,code,tab)
  if tab then
    if type(tab)~="table" then
      dnames[#dnames+1] = "*Unexpected non-table value in "..subpage(page).." ("..code..")"
    else
      for _,name in pairs(tab) do
        names, inames, dnames = testname(names,inames,dnames,page,code,name)
      end
    end
  end
  return names, inames, dnames
end
local fields = {name=1,isoname=1,isonames=1,displayname=1,isodisplayname=1,isodisplaynames=1,altnames=1,lang=1,defaultlang=1,alpha3=1,numeric=1,nocode=1}
local function testentry(names,dnames,page,code,edata)
  for k,_ in pairs(edata) do
    if not fields[k] then
      dnames[#dnames+1] = "*Unknown field \""..k.."\" in "..subpage(page).." ("..code..")"
    end
  end
  local inames = {}
  names, inames, dnames = testname(names,inames,dnames,page,code,edata.name)
  names, inames, dnames = testname(names,inames,dnames,page,code,edata.isoname)
  names, inames, dnames = testnametable(names,inames,dnames,page,code,edata.isonames)
  names, inames, dnames = testnametable(names,inames,dnames,page,code,edata.altnames)
  if not edata.nocode then
    names, inames, dnames = testname(names,inames,dnames,page,code,code)
  end
  if page=="National" then
    names, inames, dnames = testname(names,inames,dnames,page,code,edata.alpha3)
    names, inames, dnames = testname(names,inames,dnames,page,code,edata.numeric)
  end
  for k,v in pairs(inames) do names[k]=v end
  return names, dnames
end

local dnames = {}

--ISO 3166-1
local names = {}
for code,cdata in pairs(data) do
  names, dnames = testentry(names,dnames,"National",code,cdata)
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 scode,cdata in pairs(sdata) do
      if type(cdata)=="table" then
        names, dnames = testentry(names,dnames,code,scode,cdata)
      end
    end
  end
end

if #dnames>0 then
  return table.concat(dnames,"\n")
else
  return "None"
end

end

return p