Module:Delimited tag
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Delimited tag/doc
local i18n = require('Dev:I18n').loadMessages('Delimited tag')
local p = {}
function p.output(f)
local args = f
if f == mw.getCurrentFrame() then
args = require('Dev:Arguments').getArgs(f)
end
local tag = function(txt)
return '<' .. args['tag'] .. '>' .. txt .. '</' .. args['tag'] .. '>'
end
local listLevel = args['list-level'] or '**'
local output = tag(assert(args[1], i18n:msg('not-provided')))
local finalDelimiterValues = {
['none'] = '<nowiki/>',
['comma'] = i18n:msg('delimiter-comma'),
[','] = i18n:msg('delimiter-comma'),
['and'] = i18n:msg('final-delimiter-and'),
['&'] = i18n:msg('final-delimiter-&'),
['or'] = i18n:msg('final-delimiter-or'),
['to'] = i18n:msg('delimiter-to'),
['delimiter-à'] = i18n:msg('delimiter-à'),
['delimiter-de'] = i18n:msg('delimiter-de'),
['br'] = i18n:msg('delimiter-br'),
['newline'] = i18n:msg('delimiter-br'),
['list'] = i18n:msg('delimiter-list') .. listLevel,
['bullet'] = i18n:msg('conjunction'),
['*'] = i18n:msg('conjunction'),
['and-list'] = i18n:msg('final-delimiter-and-list') .. listLevel,
['&-list'] = i18n:msg('final-delimiter-&-list') .. listLevel,
['or-list'] = i18n:msg('final-delimiter-or-list') .. listLevel,
['comma-list'] = i18n:msg('delimiter-comma-list') .. listLevel,
[',-list'] = i18n:msg('delimiter-comma-list') .. listLevel,
}
local midDelimiterValues = {
['and'] = i18n:msg('mid-delimiter-and'),
['&'] = i18n:msg('mid-delimiter-&'),
['or'] = i18n:msg('mid-delimiter-or'),
['and-list'] = i18n:msg('mid-delimiter-and-list') .. listLevel,
['&-list'] = i18n:msg('mid-delimiter-&-list') .. listLevel,
['or-list'] = i18n:msg('mid-delimiter-or-list') .. 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 .. tag(val)
end
end
return output
end
return p