Перейти к содержанию

Амодуль:Transclusion count

Аматериал Авикипедиа аҟынтә - зхы иақәиҭу аенциклопедиа

Fetches usage data for highly-transcluded templates. Uses bot-updated values from subpages of Module:Transclusion_count/data/ when available.

{{#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/.

{{#invoke:Transclusion count|tabulate}}

  • The number of transclusion count is generated via subpages of Module:Transclusion count/data when is available and is automatically updated via a bot.

local p = {}

function p._fetch(args)
	local template = nil
	local return_value = nil

	-- Иҟазар адемо-параметр ахархәара, мамзар уажәтәи ашаблон ахьӡ ахархәара
	local namespace = mw.title.getCurrentTitle().namespace
	if args["demo"] and args["demo"] ~= "" then
		template = mw.ustring.gsub(args["demo"],"^[Tt]emplate:","")
	elseif namespace == 10 then -- Ашаблон ахьӡқәа рҭыԥ
		template = mw.title.getCurrentTitle().text
	elseif namespace == 828 then -- Амодуль ахьӡқәа рҭыԥ
		template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)
	end

	-- Ашаблон ма амодуль ахьӡқәа рҭыԥ аҟны иҟазар, /дата аҟны аԥхьаӡара ԥшаа
	if template ~= nil then
		namespace = mw.title.new(template, "Template").namespace
		if namespace == 10 or namespace == 828 then
			template =  mw.ustring.gsub(template, "/doc$", "") -- ацәаҳәа /doc аҵыхәантә
			template =  mw.ustring.gsub(template, "/sandbox$", "") -- ацәаҳәа /аԥслымӡҭра аҵыхәантә
			local index = mw.ustring.sub(mw.title.new(template).text,1,1)
			local status, data = pcall(function ()
				return(mw.loadData('Амодуль:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other")))
			end)
			if status then
				return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
			end
		end
	end
	
	-- Адыррақәа рышьаҭа аҵакы ыҟамзар, ахархәара азутәуп ашаблон ахь ииасуа аҵакы
	if return_value == nil and args[1] ~= nil then
		local arg1=mw.ustring.match(args[1], '[%d,]+')
		if arg1 and arg1 ~= '' then
			return_value = tonumber(mw.getCurrentFrame():callParserFunction('formatnum', arg1, 'R'))
		end
	end
	
	return return_value	
end

function p.fetch(frame)
	return p._fetch(frame.args)
end

-- Аҭаӡҩыра ҟашәҵа абри адыррақәа рзы [[Wikipedia:Database reports/Templates transcluded on the most pages]]
function p.tabulate()
	local list = {}
	for i = 65, 91 do
		local data = mw.loadData('Амодуль:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i)))
		for name, count in pairs(data) do
			table.insert(list, {mw.title.new(name, "Template").fullText, count})	
		end
	end
	table.sort(list, function(a, b)
		return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2])
	end)
	local lang = mw.getContentLanguage();
	for i = 1, #list do
		list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2]))
	end
	return table.concat(list)
end

return p