Modul:Transclusion count

Page semibeskyttet
Fra Wikipedia, den frie encyklopædi
Documentation icon Moduldokumentation[vis] [redigér] [historik] [opfrisk]

Henter brugsdata for megetbrugte skabeloner. Bruger bot-opdateret værdier fra underside af Modul:Transclusion_count/data, når den er tilstede.

Brug

{{#invoke:Transclusion count|fetch|number of transclusions|use + notation|all-pages=|demo=}}

  • antal af brug: er en statisk antal af gange skabelonen er blevet brugt, til brug, når værdien ikke kan læses fra databasen. Den værdi vil blive ignoreret hvis antal brug er tilsted for den aktuelle side.
  • demo=Skabelonnavn: vil bruge antal brug for den skabelon som er angivet i stedet for den skabelon, som den bruges af. Angivelse må være det samme værdi, som bruges i Modul:Transclusion_count/data.

{{#invoke:Transclusion count|tabulate}}

Noter

{{#invoke:Transclusion count|function_name}}

local p = {}

function p.fetch(frame)
	local template = nil
	local return_value = nil

	-- Use demo parameter if it exists, otherswise use current template name
	local namespace = mw.title.getCurrentTitle().namespace
	if frame.args["demo"] and frame.args["demo"] ~= "" then
		template = frame.args["demo"]
	elseif namespace == 10 then -- Template namespace
		template = mw.title.getCurrentTitle().text
	elseif namespace == 828 then -- Module namespace
		template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)
	end

	-- If in template or module namespace, look up count in /data
	if template ~= nil then
		namespace = mw.title.new(template, "Template").namespace
		if namespace == 10 or namespace == 828 then
			template =  mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end
			local index = mw.ustring.sub(mw.title.new(template).text,1,1)
			local status, data = pcall(function () 
				return(mw.loadData('Module:Transclusion_count/data')) 
			end)
			if status then
				return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
			end
		end
	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,]+')
		if arg1 and arg1 ~= '' then
			return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
		end
	end
	
	return return_value	
end

-- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]]
function p.tabulate(frame)
	local list = {}
	local data = mw.loadData('Module:Transclusion count/data')
	for name, count in pairs(data) do
		table.insert(list, {mw.title.new(name, "Template").fullText, count})	
	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