Module:User script table row/sandbox: Difference between revisions
Appearance
Content deleted Content added
Guarapiranga (talk | contribs) 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 |
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' |
local row = mw.html.create('tr') |
||
⚫ | |||
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() |
|||
⚫ | |||
:addClass('mw-collapsible mw-collapsed userscripttable-instruction') |
|||
⚫ | |||
:addClass('userscripttable-instruction-head') |
|||
⚫ | |||
⚫ | |||
:tag('div') |
|||
⚫ | |||
: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() |
||
⚫ | |||
end |
|||
⚫ | |||
:attr('id', code) |
|||
:done() |
|||
:addClass('scriptInstallerLink') |
|||
:attr('id', code) |
|||
:done() |
|||
end |
end |
||
row:node(cell) |
row:node(cell) |
||
end |
end |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
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( |
:tag('td'):wikitext(stats.total):done() |
||
: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
![]() | This is the module sandbox page for Module:User script table row (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)
: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