Toggle menu
15
236
75
27.6K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 21:12, 23 February 2025 by Prd (talk | contribs) (Created page with "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...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Implements {{user script table row}} used in Wikipedia:User scripts/List. /data interprets Wikipedia:User scripts/Most imported scripts and formats the data in a table.


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