Module:Transclusion count: Difference between revisions

From escforumwiki
Jump to navigation Jump to search
en>Ahecht
Sync from sandbox. Move functions to Module:High-use
en>MusikBot II
m Protected "Module:Transclusion count": High-risk template or module (more info) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
(No difference)

Revision as of 18:00, 3 December 2019

Fetches usage data for highly-trandscluded 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 = mw.ustring.gsub(mw.title.getCurrentTitle().text, "/doc$", "")
	if frame.args["demo"] and frame.args["demo"] ~= "" then
		template = mw.ustring.gsub(frame.args["demo"], "/doc$", "")
	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 return_value == 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