Module:Vgrtbl
Appearance
local p = {}
local lang = mw.language.getContentLanguage()
local function tryDate(str)
local success, result = pcall(lang.formatDate, lang, 'c', str)
if success then
return result
else
return str
end
end
function p.main(frame)
local args = frame:getParent().args
if not args[1] or mw.text.trim(args[1]) == '' then
return ''
end
local v = args.v or 1
if args.c == '0' then
-- If collapse mode is off
local retval = frame:expandTemplate{title = 'vgrtbl/text', args = { s = 1, v = v, args[2], args[1] }}
local i = 3
while args[i] and mw.text.trim(args[i]) ~= '' do
retval = retval .. '<br />' .. frame:expandTemplate{title = 'vgrtbl/text', args = { v = v, args[i + 1], args[i] }}
i = i + 2
end
return retval
else
-- If collapse mode is on
local dates = {}
local dateOrder = {}
local i = 1
local retval
while args[i] and mw.text.trim(args[i]) ~= '' do
local d = tryDate(args[i + 1])
if dates[d] then
table.insert(dates[d], args[i])
else
table.insert(dateOrder, d)
dates[d] = { args[i] }
end
i = i + 2
end
for key, val in ipairs(dateOrder) do
if key == 1 then
retval = frame:expandTemplate{title = 'vgrtbl/text', args = { s = 1, v = v, val, table.concat(dates[val], '/') }}
else
retval = retval .. '<br />' .. frame:expandTemplate{title = 'vgrtbl/text', args = { v = v, val, table.concat(dates[val], '/') }}
end
end
return retval
end
end
return p