Bước tới nội dung

Mô đun:ISO 3166/data

Bách khoa toàn thư mở Wikipedia

local p = {}local data = mw.loadData("Mô đun:ISO 3166/data/National")function p.list(frame)--Returns a list of subpages and associated countrieslocal codes = {}for alpha2,cdata in pairs(data) do codes[#codes+1] = {alpha2,cdata.name}endtable.sort(codes, function(t1,t2) return t1[1]<t2[1] end)local out = {"* [[Mô đun:ISO 3166/data/National|National]]"}for _,cdata in ipairs(codes) do out[#out+1] = "* [[Mô đun:ISO 3166/data/"..cdata[1].."|"..cdata[1].." ("..cdata[2]..")]]"endreturn table.concat(out,"\n")endfunction 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 = "Mô đun: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 entryendlocal letter = frame.args[1]local out = "|-\n!"..letter.."*"for i = 65, 90 do out = out.."\n|"..cell(letter..string.char(i),frame.args[2])endreturn outendfunction p.testall(frame)--Search across all subpages for problems with nameslocal strip = require("Mô đun:ISO 3166").striplocal function subpage(p) return "[[Mô đun:ISO 3166/data/"..p.."|/"..p.."]]"endlocal function testname(names,inames,dnames,page,code,name) if name then if type(name)~="string" then dnames[#dnames+1] = "*Giá trị không phải chuỗi không mong đợi trong "..subpage(page).." ("..code..")" else local sname = strip(name) if not names[sname] then inames[sname] = name else dnames[#dnames+1] = "*Tên trùng lặp: \""..name.."\" trong "..subpage(page) ..(names[sname]==name and " (chính xác)" or " (không chính xác)").." ("..code..")" end end end return names, inames, dnamesendlocal function testnametable(names,inames,dnames,page,code,tab) if tab then if type(tab)~="table" then dnames[#dnames+1] = "*Giá trị không phải bảng không mong đợi trong "..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, dnamesendlocal 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] = "*Trường không rõ \""..k.."\" trong "..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, dnamesendlocal dnames = {}--ISO 3166-1local names = {}for code,cdata in pairs(data) do names, dnames = testentry(names,dnames,"National",code,cdata)end--ISO 3166-2for code,_ in pairs(data) do names = {} local spage = "Mô đun: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 endendif #dnames>0 then return table.concat(dnames,"\n")else return "None"endendreturn p