Модуль:Stats
Перейти к навигации
Перейти к поиску
Для документации этого модуля может быть создана страница Модуль:Stats/doc
local nouns = {
[0] = { singular = 'статья', dual = 'статьи', plural = 'статей' },
[196] = { singular = 'документ', dual = 'документа', plural = 'документов' },
[3000] = { singular = 'новость', dual = 'новости', plural = 'новостей' },
[3002] = { singular = 'материал', dual = 'материала', plural = 'материалов' }
}
local namespaces = mw.site.namespaces
local ask = mw.smw.ask
local lang, lower = mw.getContentLanguage (), mw.ustring.lower
local function stats (ns)
local name = namespaces [ns].name
local nouns, noun = nouns [ns], lower (name)
local forms = nouns
and { nouns.singular, nouns.dual, nouns.plural }
or { noun, noun, noun }
local count = ask {
'[[' .. name .. ':+]] [[Дата создания::+]]',
format = 'count'
}
if count > 0 then
return '<span class="nowrap">'
.. "<big>'''[[Служебная:Все_страницы/" .. name .. ':|'
.. tostring (count)
.. "]]'''</big> "
.. lang:plural (count, forms)
.. '</span>'
end
end
local functions, all = {}, {}
for ns, config in pairs (namespaces) do
if config.isContent then
all [#all + 1] = ns
local func = function (frame)
return stats (ns)
end
functions [ns] = func
functions [config.name] = func
functions [lower (config.name)] = func
functions [lower (config.canonicalName)] = func
end
end
local list = mw.text.listToText
local function all_stats (frame)
local reports = {}
for _, ns in ipairs (all) do
reports [#reports + 1] = stats (ns)
end
return list (reports)
end
functions.all = all_stats
functions ['всё'] = all_stats
functions ['все'] = all_stats
return functions