Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:User script table row

From Wikipedia, the free encyclopedia

local data = mw.loadData('Module:User script table row/data')
local p = {}

function p._main(args)
	local code = args.code
	local doc = args.doc
	local name = args.name
	local desc = args.desc
	
	if not code and not doc then
		return mw.html.create('tr'):tag('td'):attr('colspan', 4)
			:tag('span')
				:addClass('error')
				:wikitext('Error: <code>|code=</code> or <code>|doc=</code> must be specified')
				:allDone()
	end
	
	if not code then
		code = doc .. '.js'
	end
	if not doc then
		local title = code:match('^(.+)%.[CJcj][Ss][Ss]?$')
		if title then
			title = mw.title.new(title)
			if not title.isExternal and title.exists then
				doc = title.fullText
			end
		end
	end
	if not name then
		name = doc and mw.ustring.match(doc, '[^/]+$') or
			mw.ustring.match(code, '([^/]+)%.[CJcj][Ss][Ss]?$')
	end
	
	local row = mw.html.create('tr')
	
	do
		local cell = mw.html.create('td')
			:wikitext(doc and string.format('[[:%s|%s]]', doc, name) or name)
		
		if args.indent and args.indent:find('^%d+$') then
			cell:css('padding-left', args.indent .. 'em')
		end
		
		if code ~= 'none' then
			cell
				:wikitext(' ')
				:tag('span')
					:addClass('userscripttable-sourcelink')
					:wikitext(string.format('([[:%s|source]])', code))
					:done()
				:tag('span')
					:addClass('scriptInstallerLink')
					:attr('id', code)
					:done()
		end
		
		row:node(cell)
	end
	
	row:tag('td')
		:wikitext(desc)
		:done()
	
	local stats = code and data[code] or { total = 'N/A', active = 'N/A' }
	row
		:tag('td'):wikitext(stats.total):done()
		:tag('td'):wikitext(stats.active)
	
	return row
end

function p.main(frame)
	local args = {}
	for k, v in pairs(frame:getParent().args) do
		if v and v ~= '' then
			args[k] = v
		end
	end
	return p._main(args)
end

return p