×
Create a new article
Write your page title here:
We currently have 7,891 articles on LGBTQIA+ Wiki. Type your article name above or create one of the articles listed here!



    LGBTQIA+ Wiki
    7,891Articles

    Module:Transclusion count

    Documentation for this module may be created at Module:Transclusion count/doc

    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/' .. (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 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 = {}
    	for i = 65, 91 do
    		local data = mw.loadData('Module: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
    
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.