Module:Sandbox/Outrowed/Delimited tag
< Module:Sandbox | Outrowed
local p = {}
function p.output(frame)
local args = frame
if frame == mw.getCurrentFrame() then
args = require('Module:ProcessArgs').merge(true)
end
local format_delimiter = function(wikitext)
local output = wikitext
output = (args["prefix"] or "") .. output .. (args["postfix"] or "")
if args["all-link"] then
output = "[[" .. wikitext .. "|" .. output .. "]]"
end
if args["tag"] then
local html = mw.html.create(args["tag"])
if args["wordbreak"] then
html:css("word-break", "break-all")
end
html:wikitext(output)
output = tostring(html)
end
return output
end
local listLevel = args['list-level'] or '**'
local output = format_delimiter(assert(args[1], 'No tag text provided'))
local finalDelimiterValues = {
['none'] = '<nowiki/>',
['comma'] = ', ',
[','] = ', ',
['and'] = ', and ',
['&'] = ' & ',
['or'] = ' or ',
['to'] = ' to ',
['br'] = '<br/>',
['newline'] = '<br/>',
['list'] = '\n' .. listLevel,
['bullet'] = '\n' .. listLevel,
['*'] = '\n' .. listLevel,
['and-list'] = ', and\n' .. listLevel,
['or-list'] = ', or\n' .. listLevel,
['&-list'] = ' &\n' .. listLevel,
['comma-list'] = ',\n' .. listLevel,
[',-list'] = ',\n' .. listLevel,
}
local midDelimiterValues = {
['and'] = ', ',
['&'] = ', ',
['or'] = ', ',
['and-list'] = ',<br/>\n' .. listLevel,
['&-list'] = ',<br/>\n' .. listLevel,
['or-list'] = ',<br/>\n' .. listLevel,
}
local delimiter = args['delimiter'] or args['delim'] or args['d'] or ' '
local finalDelimiter = finalDelimiterValues[delimiter] or delimiter
local midDelimiter = midDelimiterValues[delimiter] or finalDelimiter
for i,val in ipairs(args) do
if (i > 1) then
local currentDelimiter = args[i+1] and midDelimiter or finalDelimiter
output = output .. currentDelimiter .. format_delimiter(val)
end
end
return output
end
return p