Module:Transclusion count
Jump to navigation
Jump to search
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
Fetches usage data for highly-transcluded templates. Uses bot-updated values from subpages of Module:Transclusion_count/data/ when available.
Usage
{{#invoke:Transclusion count|fetch|number of transclusions|use + notation|all-pages=|demo=}}
number of transclusions
: is a static number of times the template has been transcluded, to use when values cannot be read from the database. This value will be ignored if transclusion data is available for the current page.demo=Template_name
: will use the transclusion count for the template at Template:Template_name instead of detecting what template it is being used on. Capitalization must exactly match the value used in Special:PrefixIndex/Module:Transclusion_count/data/.
local p = {}
function p.fetch(frame)
local template = nil
local return_value = nil
-- Use demo parameter if it exists, otherswise use current template name
if frame.args["demo"] and frame.args["demo"] ~= "" then
template = frame.args["demo"]
elseif mw.title.getCurrentTitle().namespace == 10 then -- Template namespace only
template = mw.title.getCurrentTitle().text
end
-- If in template namespace, look up count in /data
if template ~= nil and mw.title.new(template, "Template").namespace == 10 then
template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end
local index = mw.ustring.upper(mw.ustring.sub(template,1,1))
local data = mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))
return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
end
-- If database value doesn't exist, use value passed to template
if return_value == nil and frame.args[1] ~= nil then
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
end
return return_value
end
return p