模組:NUMBEROF/rank
![文档图示](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png)
您可能想要创建本Scribunto模块的文档。 编者可以在本模块的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。 请在/doc子页面中添加分类。本模块的子页面。 |
-- Return a table of statistics to be accessed once per page using mw.loadData.
-- For each sister project, the table ranks each site by its number of articles.
local projects = {
'wikipedia',
}
local function getData(statistics)
local iSite, iArticles
for i, v in ipairs(statistics.schema.fields) do
if v.name == 'site' then
iSite = i
elseif v.name == 'articles' then
iArticles = i
end
end
local rankBySite, rankByIndex = {}, {}
for _, v in ipairs(statistics.data) do
rankBySite[v[iSite]] = v[iArticles] -- rank of site from number of articles
rankByIndex[v[iArticles]] = v[iSite] -- inverse
end
return {
rankByIndex = rankByIndex, -- rankByIndex[1] == 'en'
rankBySite = rankBySite, -- rankBySite['en'] == 1
}
end
local function makeData()
-- For example, data to rank each language for sister project wikipedia is at
-- https://commons.wikimedia.org/wiki/Data:Wikipedia_statistics/rank/wikipedia.tab
local result = {}
for _, project in ipairs(projects) do
result[project] = getData(mw.ext.data.get('Wikipedia statistics/rank/' .. project .. '.tab'))
end
return result
end
return makeData()