MysticNebula70(讨论 | 贡献) (创建页面,内容为“local p = {} function p.main(f) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args end f = mw.getCurrentFrame() local wrapTag = args.…”) |
MysticNebula70(讨论 | 贡献) 无编辑摘要 |
||
(未显示同一用户的3个中间版本) | |||
第1行: | 第1行: | ||
local p = {} |
local p = {} |
||
⚫ | |||
+ | local function stringToArray(str, separator, wrapTag, keepBlank) |
||
⚫ | |||
− | local |
+ | local arr = {} |
+ | local i = 1 |
||
− | if f == mw.getCurrentFrame() then |
||
+ | for v in mw.text.gsplit(str, separator) do |
||
− | args = f:getParent().args |
||
+ | if v ~= '' or keepBlank then |
||
+ | if wrapTag ~= '' then |
||
+ | arr[i] = f:extensionTag(wrapTag, v) |
||
+ | else |
||
+ | arr[i] = v |
||
+ | end |
||
+ | end |
||
+ | i = i + 1 |
||
end |
end |
||
+ | return arr |
||
⚫ | |||
+ | end |
||
⚫ | |||
+ | |||
⚫ | |||
+ | local function tableToArray(tbl, wrapTag, keepBlank) |
||
local arr = {} |
local arr = {} |
||
− | for k, v in pairs( |
+ | for k, v in pairs(tbl) do |
− | if |
+ | if type(k) == 'number' and (v ~= '' or keepBlank) then |
if wrapTag ~= '' then |
if wrapTag ~= '' then |
||
arr[k] = f:extensionTag(wrapTag, v) |
arr[k] = f:extensionTag(wrapTag, v) |
||
第20行: | 第30行: | ||
end |
end |
||
table.sort(arr) |
table.sort(arr) |
||
+ | return arr |
||
+ | end |
||
+ | |||
⚫ | |||
+ | local args = require('Module:ProcessArgs').merge(true) |
||
+ | return p.array(args) |
||
+ | end |
||
+ | |||
+ | function p.array(args) |
||
⚫ | |||
⚫ | |||
+ | local keepBlank = args.keepblank |
||
+ | local arr |
||
+ | if args.mode == 'single' then |
||
+ | arr = stringToArray(args[1], args.sep or ',', wrapTag, keepBlank) |
||
+ | else |
||
+ | arr = tableToArray(args, wrapTag, keepBlank) |
||
+ | end |
||
if delimiter == 'pretty' then |
if delimiter == 'pretty' then |
2021年11月28日 (日) 03:55的版本
local p = {}
local f = mw.getCurrentFrame()
local function stringToArray(str, separator, wrapTag, keepBlank)
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
return arr
end
local function tableToArray(tbl, wrapTag, keepBlank)
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
table.sort(arr)
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 arr
if args.mode == 'single' then
arr = stringToArray(args[1], args.sep or ',', wrapTag, keepBlank)
else
arr = tableToArray(args, wrapTag, keepBlank)
end
if delimiter == 'pretty' then
return mw.text.listToText(arr)
elseif delimiter == 'newline' or delimiter == 'br' then
return table.concat(arr, '<br>')
elseif delimiter == 'list' or delimiter == 'list-newline'
or delimiter == 'bullet' or delimiter == '*' then
local listLevel = args['list-level'] or '**'
return table.concat(arr, '\n' .. listLevel)
else
return table.concat(arr, delimiter)
end
end
return p