更多操作
创建页面,内容为“local p = {} local f = mw.getCurrentFrame() local function stringToArray(str, separator, wrapTag, keepBlank, requireSort) local arr = {} local i = 1 for v in mw.text.gsplit(str, separator) do if v ~= '' or keepBlank then if wrapTag ~= '' then arr[i] = f:extensionTag(wrapTag, v) else arr[i] = v end end i = i + 1 end if requireSort then table.sort(arr) end return arr end local function tableToArray(tbl, wrapTag, keepBlank, requir…” |
(没有差异)
|
2024年3月28日 (四) 22:32的最新版本
此模块的文档可以在模块:Array/doc创建
local p = {}
local f = mw.getCurrentFrame()
local function stringToArray(str, separator, wrapTag, keepBlank, requireSort)
local arr = {}
local i = 1
for v in mw.text.gsplit(str, separator) do
if v ~= '' or keepBlank then
if wrapTag ~= '' then
arr[i] = f:extensionTag(wrapTag, v)
else
arr[i] = v
end
end
i = i + 1
end
if requireSort then
table.sort(arr)
end
return arr
end
local function tableToArray(tbl, wrapTag, keepBlank, requireSort)
local arr = {}
for k, v in pairs(tbl) do
if type(k) == 'number' and (v ~= '' or keepBlank) then
if wrapTag ~= '' then
arr[k] = f:extensionTag(wrapTag, v)
else
arr[k] = v
end
end
end
if requireSort then
table.sort(arr)
end
return arr
end
function p.main()
local args = require('Module:ProcessArgs').merge(true)
return p.array(args)
end
function p.array(args)
local wrapTag = args.wrap or ''
local delimiter = args.delimiter or args.d or ''
local keepBlank = args.keepblank
local requireSort = args.sort
local outputPrefix = args.prefix or ''
local outputSuffix = args.suffix or ''
local arr
if args.mode == 'single' then
arr = stringToArray(args[1], args.sep or ',', wrapTag, keepBlank, requireSort)
else
arr = tableToArray(args, wrapTag, keepBlank, requireSort)
end
local result
if delimiter == 'pretty' then
result = mw.text.listToText(arr)
elseif delimiter == 'newline' or delimiter == 'br' then
result = table.concat(arr, '<br>')
elseif delimiter == 'list' or delimiter == 'list-newline'
or delimiter == 'bullet' or delimiter == '*' then
local listLevel = args['list-level'] or '**'
result = table.concat(arr, '\n' .. listLevel)
else
result = table.concat(arr, delimiter)
end
return outputPrefix .. result .. outputSuffix
end
return p