此模块用于将一个给定分隔符的列表转换为以另一给定分隔符分隔的链接列表。
用法
directlink:设置此参数以使用{{Direct link而非[[foo]];prefix:所有链接的公共前缀;suffix:所有链接的公共后缀;nameprefix:所有链接显示文字的公共前缀;namesuffix:所有链接显示文字的公共后缀;pretty:设置此参数以使用更自然的分隔符方式;- 设置此项后
delimiter和finaldelimiter将默认从MediaWiki名字空间内寻找合适的值,也可手动指定;
- 设置此项后
sep:转换前的列表分隔符,默认为,;delimiter:转换后的列表分隔符;finaldelimiter:转换后的最后一个列表分隔符,仅当设置了pretty时有实际效果。
另见
语言
local p = {}
function p.main()
local args = require('Module:ProcessArgs').merge(true)
return p.linkArray(args)
end
function p.linkArray(args)
local f = mw.getCurrentFrame()
local tbl = {}
local i = 1
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 ']]'
for v in mw.text.gsplit(args[1], '%s*'.. sep ..'%s*') do
if v ~= '' then
tbl[i] = f:preprocess(linkPrefix .. prefix ..
mw.text.trim(v) .. suffix .. '|' ..
namePrefix .. mw.text.trim(v) ..
nameSuffix .. linkSuffix)
i = i + 1
end
end
if args.pretty then
return mw.text.listToText(tbl, delimiter, finalDelimiter)
else
return table.concat(tbl, delimiter)
end
end
return p