Module:NUMBEROF
Appearance
![]() | This Lua module is used in MediaWiki:Statistics-files-desc. Changes to it can cause immediate changes to the Wikipedia user interface. To avoid major disruption, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them. |
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
![]() | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
![]() | This module depends on the following other modules: |
- Module:NUMBEROF implements templates {{NUMBEROF}} and {{Wikipedia rank by size}}.
- It includes sub-modules Module:NUMBEROF/data, Module:NUMBEROF/rank, Module:NUMBEROF/other and Module:NUMBEROF/meta which are used once per page [not per template invocation]. These sub-modules pull data from Wikimedia Commons:
- c:Data:Wikipedia statistics/meta.tab for classification of wikis,
- c:Data:Wikipedia statistics/data.tab for statistics of all wikis,
- c:Data:Wikipedia statistics/rank/*.tab for rankings of languages in each project.
- data.tab, meta.tag and rank/*.tab are updated by a bot multiple times each day.
- The module was originally developed on Enwiki.
local p = {}
local function trimArg(arg)
if arg == "" or arg == nil then
return nil
else
return mw.ustring.lower(mw.text.trim(arg))
end
end
local function tableLength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
-- Credit: http://lua-users.org/wiki/FormattingNumbers
local function comma_value(amount)
local formatted = amount
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
if (k==0) then
break
end
end
return formatted
end
function p.numberof(frame)
local pframe = frame:getParent()
local args = pframe.args
local tname = "NUMBEROF"
local result = -1
local data = mw.ext.data.get("Wikipedia_statistics/data.tab") -- https://commons.wikimedia.org/wiki/Data:Wikipedia_statistics/data.tab
local action = trimArg(args[1]) -- "ARTICLES, PAGES, EDITS, USERS, ACTIVEUSERS, ADMINS or FILES"
if not action then
error("Parameter 1 is missing. See [[Template:" .. tname .. "]] documentation")
end
local site = trimArg(args[2]) -- "en" or "en.wikipedia" or "en.wikiquote" etc..
if not site then
error("Parameter 2 is missing. See [[Template:" .. tname .. "]] documentation")
end
local site2split = mw.text.split(site, "%.")
if tableLength(site2split) == 1 then
site = site .. ".wikipedia"
end
local comma = trimArg(args[3]) -- If set to "N" use commas in output
for k,v in pairs(data['data']) do
if site == mw.ustring.lower(v[1]) then
if action == "activeusers" then
result = v[2]
elseif action == "admins" then
result = v[3]
elseif action == "articles" then
result = v[4]
elseif action == "edits" then
result = v[5]
elseif action == "files" then
result = v[6]
elseif action == "pages" then
result = v[7]
elseif action == "users" then
result = v[8]
end
end
end
if result > -1 and comma then
result = comma_value(result)
end
return result
end
return p