Jump to content

Module:User script table row/sandbox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
trim
No edit summary
Line 3: Line 3:


function p._main(args)
function p._main(args)
local temp
local code = args.code
local code = args.code
local doc = args.doc
local doc = args.doc
local name = args.name
local name = args.name
local desc = args.desc
local desc = args.desc
local conflicts = args.conflicts
local alt = args.alt
local author = args.author
if not code and not doc then
if not code and not doc then
Line 20: Line 16:
end
end
if not code and not args.instruction then
if not code then
code = doc .. '.js'
code = doc .. '.js'
end
end

if not conflicts then conflicts = ''
end
if not alt then
alt = ''
else
alt = '\n*' .. alt:gsub('User:(.-)(%.[CJcj][Ss][Ss]?)', '[[User:%1%2|%1]]'):gsub('%s', '\n*')
end

if not doc then
if not doc then
local title = code:match('^(.+)%.[CJcj][Ss][Ss]?$')
local title = code:match('^(.+)%.[CJcj][Ss][Ss]?$')
Line 42: Line 28:
end
end
end
end

if not name then
if not name then
name = doc and mw.ustring.match(doc, '[^/]+$') or
name = doc and mw.ustring.match(doc, '[^/]+$') or
mw.ustring.match(code, '([^/]+)%.[CJcj][Ss][Ss]?$')
mw.ustring.match(code, '([^/]+)%.[CJcj][Ss][Ss]?$')
end
end

if not author then
author = code:match('User:(.-)%/')
end

if doc then
temp = mw.text.trim(mw.getCurrentFrame():expandTemplate{title='Transclude lead excerpt', args = {doc, paragraphs='1', more='no'}})
end
if temp ~= '' then
desc = temp
end

-- if mw.text.truncate(mw.getCurrentFrame():expandTemplate{title=doc}, 2) == '{{' then
-- desc = mw.getCurrentFrame():callParserFunction('msgnw', doc):match('desc%s*=%s*(.-)%|)')
-- else
-- end
local row = mw.html.create('tr'):attr('id', code)
local row = mw.html.create('tr')
local instruction
if args.instruction ~= 'no' then
instruction = args.instruction
if not instruction then
local isGlobal = args.skin == 'global'
local temp = code:find('%.[Cc][Ss][Ss]$') and 'luss' or 'lusc'
if isGlobal then
local interwiki = mw.title.new(code).interwiki
local path = interwiki == 'meta' and code:sub(6) or
interwiki == '' and 'w:' .. code or code
temp = mw.getCurrentFrame():expandTemplate{
title = temp, args = { path, '' }
}:gsub('{{subst:localurl', '{{subst:fullurl'):gsub('%s*//.-$', '')
else
temp = string.format('{{subst:%s|1=%s%s}}',
temp,
code,
args.backlink and '|2=' .. args.backlink or ''
)
end
instruction = string.format(
'\'\'\'[[%sSpecial:EditPage/Special:MyPage/%s.js|Click here]]\'\'\' and paste:<div><code>%s</code></div>',
isGlobal and 'meta:' or '',
args.skin or 'common',
temp
)
end
instruction = mw.html.create('')
:newline()
:tag('div')
:addClass('mw-collapsible mw-collapsed userscripttable-instruction')
:tag('div')
:addClass('userscripttable-instruction-head')
:wikitext('How to install')
:done()
:tag('div')
:addClass('mw-collapsible-content')
:wikitext(instruction)
:done()
:done()
end
do
do
Line 116: Line 43:
end
end
if code then
if code ~= 'none' then
cell
cell
:wikitext(' ')
:wikitext(' ')
Line 123: Line 50:
:wikitext(string.format('([[:%s|source]])', code))
:wikitext(string.format('([[:%s|source]])', code))
:done()
:done()
:tag('span')
end
:addClass('scriptInstallerLink')
if instruction and code then
:attr('id', code)
cell:tag('span')
:done()
:addClass('scriptInstallerLink')
:attr('id', code)
:done()
end
end
row:node(cell)
row:node(cell)
end
end
row:tag('td')
:wikitext(desc)
:node(instruction)
:done()
local stats = code and data[code] or { total = 'N/A', active = 'N/A' }
local stats = code and data[code] or { total = 'N/A', active = 'N/A' }

row
row
:tag('td'):wikitext(string.format('[[User:%s|%s]]', author, author))
:tag('td'):wikitext(stats.total):done()
-- :tag('td'):wikitext(mw.getCurrentFrame():callParserFunction('REVISIONTIMESTAMP', code))
:tag('td'):wikitext(stats.active)
:tag('td')
:wikitext(desc)
:attr('style','text-align:left')
:node(instruction)
:done()
:tag('td'):wikitext(mw.getCurrentFrame():preprocess(conflicts))
:tag('td'):wikitext(mw.getCurrentFrame():preprocess(alt))
:tag('td'):wikitext(stats.total):attr('style','text-align:right')
:tag('td'):wikitext(stats.active):attr('style','text-align:right')
return row
return row

Revision as of 23:13, 28 September 2021

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)
		:node(instruction)
		: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