Difference between revisions of "Module:Transclusion count"

From blackwiki
Jump to navigation Jump to search
test>MusikBot II
m (Protected "Module:Transclusion count": High-risk template or module (more info) ([Edit=Require autoconfirmed or confirmed access] (indefinite)))
test>Ahecht
(Don't look up modules in the database (yet))
Line 2: Line 2:
  
 
function p.fetch(frame)
 
function p.fetch(frame)
local template = mw.ustring.gsub(mw.title.getCurrentTitle().text, "/doc$", "")
+
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
 
if frame.args["demo"] and frame.args["demo"] ~= "" then
template = mw.ustring.gsub(frame.args["demo"], "/doc$", "")
+
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
 
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"))
 
 
local return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
 
 
 
 
-- If database value doesn't exist, use value passed to template
 
-- If database value doesn't exist, use value passed to template
if return_value == nil then
+
if return_value == nil and frame.args[1] ~= nil then
 
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
 
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
 
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
 
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))

Revision as of 23:38, 8 December 2019

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