Module:Template:Delete
此模块的文档可以在Module:Template:Delete/doc创建
local data = require('Module:Template:Delete/data')
local z = {}
function extractAliases(item)
allnames = {item['code']}
for j, alias in ipairs(item['aliases']) do
table.insert(allnames, alias)
end
return allnames
end
function z.reasons(frame)
wt = {}
for i, item in ipairs(data) do
allnames = extractAliases(item)
table.insert(wt, '<tr><td>' .. mw.text.listToText(allnames, '、', '或') .. '<td>' .. item['criteria']:gsub('%!%(.-%)%!', function(m) return m:sub(3, -3) end) .. '</td>')
end
return '<table class="wikitable">' .. table.concat(wt) .. '</table>'
end
function z.input(frame)
if frame.args.parent then
args = frame:getParent().args
else
args = frame.args
end
-- precache
map = {}
for i, item in ipairs(data) do
map[item['code']:lower()] = i
if item['aliases'] then
for j, alias in ipairs(item['aliases']) do
map[alias:lower()] = i
end
end
end
-- parse
i = 1
rows = {}
pretext = {}
deletelinks = {}
while i < 10 do
arg = args[i]
if arg and map[mw.text.trim(arg:lower())] then
item = data[map[mw.text.trim(arg:lower())]]
if frame.args.reasoncode then
return item['code']
end
title = mw.title.getCurrentTitle()
checkfunc = item['check']
if checkfunc then
check = checkfunc(title)
else
check = nil
end
-- special case for F1
rowsuffix2 = ''
deletesuffix = ''
if item['code'] == 'F1' or item['code'] == 'F5' then
i = i + 1
if args[i] then
img = mw.text.trim(args[i])
else
img = nil
end
if img then
imgtitle = mw.title.new(img, 'Media')
else
imgtitle = nil
end
if imgtitle then
deletesuffix = ':[[:File:' .. imgtitle.text .. ']]'
else
if check then
rowsuffix2 = '<br><span class="error">為方便管理員檢查,請加上保留檔案的名稱。</span>'
else
check = '為方便管理員檢查,請加上保留檔案的名稱。'
end
end
end
if check then
rowsuffix = '<br><span class="error">' .. check .. '</span>' ..
(args.cat or args.cate or args.category or '[[Category:快速刪除候選|错]]')
else
if frame.args.deletelink then
table.insert(deletelinks, '[[WB:CSD|' .. item['code'] .. ']]: ' .. item['criteria']:gsub('%!%(.-%)%!', '') .. deletesuffix)
end
rowsuffix = args.cat or args.cate or args.category or ('[[Category:快速刪除候選|' .. (item['cat'] or '速') .. ']]')
end
if deletesuffix then
row = '* <strong><span id="speedy-delete-' .. item['code'] .. '">' .. item['criteria']:gsub('%!%(.-%)%!', function(m) return m:sub(3, -3) end) .. '([[WB:CSD|CSD ' .. item['code'] .. ']]' .. deletesuffix .. ')' .. rowsuffix .. rowsuffix2 .. '</span></strong>'
else
row = '* <strong><span id="speedy-delete-' .. item['code'] .. '">' .. item['criteria']:gsub('%!%(.-%)%!', function(m) return m:sub(3, -3) end) .. '([[WB:CSD|CSD ' .. item['code'] .. ']])' .. rowsuffix .. rowsuffix2 .. '</span></strong>'
end
table.insert(rows, row)
elseif arg and mw.text.trim(arg) ~= '' then
if frame.args.reasoncode then
return ''
end
-- try to read it as a title
title = mw.title.new(mw.text.trim(arg))
cat = args.cat or args.cate or args.category or '[[Category:快速刪除候選|速]]'
if title and title.exists then
if frame.args.deletelink then
table.insert(deletelinks, '[[WB:CSD|CSD]]: [[:' .. arg .. ']]')
end
table.insert(rows, '*<strong>' .. cat .. '[[:' .. arg .. ']]</strong>')
else
if frame.args.deletelink then
table.insert(deletelinks, arg)
end
arg = string.gsub(arg, "^([*:#]*)(.*)", "%1<strong>%2</strong>")
table.insert(rows, '*' .. cat .. arg)
end
end
arg = args['c' .. i]
if arg and mw.text.trim(arg) ~= '' then
table.insert(rows, '*' .. arg)
end
i = i + 1
end
-- for use by Twinkle
if frame.args.deletelink then
return mw.text.trim(table.concat(deletelinks, ';'):gsub('。;', ';'):gsub('。:', ':'))
end
if #rows > 0 then
return mw.text.trim(table.concat(pretext) .. '\n' .. table.concat(rows, '\n'))
else
return '<span style="font-weight:bold;color:red;">(請填寫理由)</span>' .. (args.cat or args.cate or args.category or '[[Category:快速刪除候選|错]]')
end
end
return z