Module:Template:Delete2
模块文档[创建]
您可能想要创建本Scribunto模块的文档。 编者可以在本模板的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。 请在/doc子页面中添加分类。本模块的子页面。 |
local mDelete = require('Module:Delete')
local mDelcat = require('Module:Delcat')
local data = require('Module:Delete/data')
local data_sandbox = require('Module:Delete/data/sandbox')
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 extractShortDesc(item)
if item['description'] then
return item['description']:gsub('{', '{'):gsub('}', '}'):gsub('|', '|')
else
return ''
end
end
function z.reasonsBox(frame)
local wt = [=[
{|class="wikitable
|-
!速删编号!!可使用的代码!!简介!!详细说明
]=]
for i, item in ipairs(data) do
allnames = extractAliases(item)
wt = wt .. string.format([=[
|-
|%s
|
* %s
|%s
|%s
]=]
, item['code'], mw.text.listToText(allnames, '\n* ', '\n* '), item['criteria'], extractShortDesc(item):gsub('{{', '{{tl|'):gsub('|', '|'):gsub('}}', '}}'))
end
wt = wt .. '|}'
return frame:preprocess(wt)
end
function z.reasonsBox_sandbox(frame)
local wt = [=[
<span style="font-weight:bold; background-color:#FFDD77; color:#800000;">(*)</span><span style="font-weight:bold; color:red;">提醒:此渲染版本为沙盒版本,可能与目前通行版本有所不同!</span>
{|class="wikitable
|-
!速删编号!!可使用的代码!!简介!!详细说明
]=]
for i, item in ipairs(data_sandbox) do
allnames = extractAliases(item)
wt = wt .. string.format([=[
|-
|%s
|
* %s
|%s
|%s
]=]
, item['code'], mw.text.listToText(allnames, '\n* ', '\n* '), item['criteria'], extractShortDesc(item):gsub('{{', '{{tl|'):gsub('|', '|'):gsub('}}', '}}'))
end
wt = wt .. '|}'
return frame:preprocess(wt)
end
function z.CSD_reason(frame)
if frame.args.parent then
args = frame:getParent().args
else
args = frame.args
end
map = {}
for i, item in ipairs(data) do
map[item['code']:lower()] = i
for j, alias in ipairs(item['aliases']) do
map[alias:lower()] = i
end
end
i = 1
rows = {}
arg = args[1]
if arg ~= nil then
if arg and map[mw.text.trim(arg:lower())] then
item = data[map[mw.text.trim(arg:lower())]]
local text = ''
if args[2] ~= nil and args[2] ~= '' then
text = args[2]
elseif args['notCSD'] ~= nil and args['notCSD'] ~= '' then
text = item['code']
else
text = 'CSD ' .. item['code']
end
if args.nolink then
return text
elseif args.reason then
return '[[WP:CSD#' .. item['code'] .. '|' .. text .. ']]:<span title="' .. extractShortDesc(item) .. '">' .. item['criteria'] .. '</span>'
elseif args.onlyreason then
return '<span title="' .. extractShortDesc(item) .. '">' .. item['criteria'] .. '</span>'
else
return '[[WP:CSD#' .. item['code'] .. '|' .. text .. ']]'
end
elseif arg and mw.text.trim(arg) ~= '' then
return require('Module:Error').error{'错误:无法找到速删代码为' .. args[i] .. '的速删项目。'}
end
else
return '[[WP:CSD|' .. (args[2] or '快速删除方针') .. ']]'
end
end
function z.CSD_reason_sb(frame)
if frame.args.parent then
args = frame:getParent().args
else
args = frame.args
end
map = {}
for i, item in ipairs(data_sandbox) do
map[item['code']:lower()] = i
for j, alias in ipairs(item['aliases']) do
map[alias:lower()] = i
end
end
i = 1
rows = {}
arg = args[1]
if arg ~= nil then
if arg and map[mw.text.trim(arg:lower())] then
item = data_sandbox[map[mw.text.trim(arg:lower())]]
local text = ''
if args[2] ~= nil and args[2] ~= '' then
text = args[2]
elseif args['notCSD'] ~= nil and args['notCSD'] ~= '' then
text = item['code']
else
text = 'CSD ' .. item['code']
end
if args.nolink then
return text
elseif args.reason then
return '[[WP:CSD#' .. item['code'] .. '|' .. text .. ']]:<span title="' .. extractShortDesc(item) .. '">' .. item['criteria'] .. '</span>'
elseif args.onlyreason then
return '<span title="' .. extractShortDesc(item) .. '">' .. item['criteria'] .. '</span>'
else
return '[[WP:CSD#' .. item['code'] .. '|' .. text .. ']]'
end
elseif arg and mw.text.trim(arg) ~= '' then
return require('Module:Error').error{'错误:无法找到速删代码为' .. args[i] .. '的速删项目。'}
end
else
return '[[WP:CSD|' .. (args[2] or '快速删除方针') .. ']]'
end
end
function z._input(args, callargs)
callargs = callargs or {}
local vaildArgs = false
local i = 0
while i < 10 do
arg = args[i]
if arg and mw.text.trim(arg) ~= '' then
vaildArgs = true
end
i = i + 1
end
if not vaildArgs then
return nil
end
-- hack
args.parent = false
args.reasoncode = callargs.reasoncode
args.deletelink = callargs.deletelink
return mDelete.input({
args = args
})
end
function z._getInputWithoutError(args)
local result = z._input(args, {
reasoncode = false,
deletelink = false
})
if not result then
return nil
end
-- remove error and category
result = mDelcat.delete_category(result, {})
result = mw.ustring.gsub(result, "<br><span class=\"error\">.-</span>", "")
-- replace <strong><span id="speedy-delete-XXX" title="xxx">(.-)</span></strong>
result = mw.ustring.gsub(result, "<strong><span id=\"speedy%-delete%-.-\" title=\".-\" ->(.-)</span></strong>", "%1")
return result
end
function z.getInputWithoutError(frame)
local args = frame:getParent().args
local out = z._getInputWithoutError(args);
if not out then
return '* <span style="color:#080;">(未填写理由)</span>'
end
return out
end
z.reasons_box = z.reasonsBox
z.reasons_box_sb = z.reasonsBox_sandbox
z.CSD_reason_sb = z.CSD_reason_sandbox
return z