跳转到内容

模組:NUMBEROF/other

维基百科,自由的百科全书

这是Module:NUMBEROF/other当前版本,由GreenC留言 | 贡献编辑于2023年9月9日 (六) 15:15 (Update from master using #Synchronizer。这个网址是本页该版本的固定链接。

(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)
-- 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 = {
	'wikibooks',
	'wikinews',
	'wikiquote',
	'wikisource',
	'wikiversity',
	'wikivoyage',
	'wiktionary',
}

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()