本站文本内容除另有声明外,转载时均必须注明出处,并遵守CC BY-NC-SA 3.0协议。(转载须知)
本站是中文Minecraft Wiki的镜像站,与Mojang Studios、Weird Gloop没有从属关系。(免责声明)
全站通知:
模块:LinkArray
刷
历
编
跳到导航
跳到搜索
此模块用于将一个给定分隔符的列表转换为以另一给定分隔符分隔的链接列表。
用法
directlink
:设置此参数以使用{{Direct link}}
而非[[foo]];prefix
:所有链接的公共前缀;suffix
:所有链接的公共后缀;nameprefix
:所有链接显示文字的公共前缀;namesuffix
:所有链接显示文字的公共后缀;pretty
:设置此参数以使用更自然的分隔符方式;- 设置此项后
delimiter
和finaldelimiter
将默认从MediaWiki名字空间内寻找合适的值,也可手动指定;
- 设置此项后
sep
:转换前的列表分隔符,默认为,
;delimiter
:转换后的列表分隔符;finaldelimiter
:转换后的最后一个列表分隔符,仅当设置了pretty
时有实际效果。
另见
local p = {}
local function stringToArray(str, sep)
local arr = {}
for v in mw.text.gsplit(str, '%s*' .. sep .. '%s*') do
if v ~= '' then
table.insert(arr, v)
end
end
if requireSort then
table.sort(arr)
end
return arr
end
local function tableToArray(tbl, requireSort)
local arr = {}
for k, v in pairs(tbl) do
if type(k) == 'number' and v ~= '' then
arr[k] = v
end
end
if requireSort then
table.sort(arr)
end
return arr
end
function p.main()
local args = require('Module:ProcessArgs').merge(true)
return p.linkArray(args)
end
function p.linkArray(args)
local f = mw.getCurrentFrame()
local prefix = args.prefix or ''
local suffix = args.suffix or ''
local namePrefix = args.nameprefix or ''
local nameSuffix = args.namesuffix or ''
local delimiter = args.delimiter
local finalDelimiter = args.finaldelimiter
local sep = args.sep or ','
local linkPrefix = args.directlink and '{{Direct link|' or '[['
local linkSuffix = args.directlink and '}}' or ']]'
local requireSort = args.sort
local firstOnly = args.firstonly
local outputPrefix = args.outputprefix or ''
local outputSuffix = args.outputsuffix or ''
local arr = {}
if args.mode and args.mode ~= 'single' then
arr = tableToArray(args, requireSort)
else
arr = stringToArray(args[1], sep, requireSort)
end
local tbl = {}
for k, v in ipairs(arr) do
if firstOnly and k ~= 1 then
table.insert(tbl, v)
else
table.insert(
tbl, f:preprocess(
linkPrefix .. prefix ..
mw.text.trim(v) .. suffix .. '|' ..
namePrefix .. mw.text.trim(v) ..
nameSuffix .. linkSuffix
)
)
end
end
local result
if args.pretty then
result = mw.text.listToText(tbl, delimiter, finalDelimiter)
else
result = table.concat(tbl, delimiter)
end
return outputPrefix .. result .. outputSuffix
end
return p