Module:Vgrtbl: Difference between revisions
Appearance
Content deleted Content added
Jackmcbarn (talk | contribs) switch order |
Jackmcbarn (talk | contribs) finish p._text |
||
Line 10: | Line 10: | ||
function p._text(dateText, name, v, s) |
function p._text(dateText, name, v, s) |
||
local retval = '<span style="white-space:normal;"><span style="white-space:normal;">' |
local retval = '<span style="white-space:normal;"><span style="white-space:normal;">' |
||
local success, result = pcall(lang.formatDate, lang, 'c', dateText) |
|||
if looksLikeYear(dateText) then |
if looksLikeYear(dateText) or not success then |
||
retval = retval .. dateText |
retval = retval .. dateText |
||
else |
else |
||
if s then |
|||
retval = retval .. '<span style="display:none">{{#time:Ym|{{{1}}}}}</span>' |
|||
--[=[ |
|||
end |
|||
{{#ifeq:{{#time:c|{{{1}}}}}|{{#time:c|1 {{{1}}}}} |
|||
local success2, result2 = pcall(lang.formatDate, lang, 'c', '1 ' .. dateText) |
|||
|{{#switch:{{{v|1}}} |
|||
if success2 and result == result2 then |
|||
|0={{#time:Y-m|{{{1}}}}} |
|||
retval = retval .. lang:formatDate(v == '0' and 'Y-m' or 'F Y', dateText) |
|||
|{{#time:F Y|{{{1}}}}} |
|||
else |
|||
}} |
|||
if s then |
|||
|{{#if:{{{s|}}}|<span style="display:none">{{#time:Ymd|{{{1}}}}}</span>}}{{#switch:{{{v|1}}} |
|||
retval = retval .. '<span style="display:none">' .. lang:formatDate('Ymd', dateText) .. '</span>' |
|||
|1={{#time:F j, Y|{{{1}}}}} |
|||
end |
|||
|0={{#time:Y-m-d|{{{1}}}}} |
|||
local formatString |
|||
|2={{#time:j F Y|{{{1}}}}} |
|||
if v == '0' then |
|||
|{{#time:F j, Y|{{{1}}}}} |
|||
formatString = 'Y-m-d' |
|||
}} |
|||
elseif v == '2' then |
|||
}} |
|||
formatString = 'j F Y' |
|||
]=] |
|||
else |
|||
formatString = 'F j, Y' |
|||
end |
|||
retval = retval .. lang:formatDate(formatString, dateText) |
|||
end |
|||
end |
end |
||
return retval .. '<small> (' .. name .. ')</small>' |
return retval .. '<small> (' .. name .. ')</small>' |
Revision as of 22:00, 21 March 2014
local p = {}
local lang = mw.language.getContentLanguage()
local function looksLikeYear(str)
local success, result = pcall(lang.formatDate, lang, 'Y', '1-1-' .. str)
return success and tonumber(result) == tonumber(str)
end
function p._text(dateText, name, v, s)
local retval = '<span style="white-space:normal;"><span style="white-space:normal;">'
local success, result = pcall(lang.formatDate, lang, 'c', dateText)
if looksLikeYear(dateText) or not success then
retval = retval .. dateText
else
if s then
retval = retval .. '<span style="display:none">{{#time:Ym|{{{1}}}}}</span>'
end
local success2, result2 = pcall(lang.formatDate, lang, 'c', '1 ' .. dateText)
if success2 and result == result2 then
retval = retval .. lang:formatDate(v == '0' and 'Y-m' or 'F Y', dateText)
else
if s then
retval = retval .. '<span style="display:none">' .. lang:formatDate('Ymd', dateText) .. '</span>'
end
local formatString
if v == '0' then
formatString = 'Y-m-d'
elseif v == '2' then
formatString = 'j F Y'
else
formatString = 'F j, Y'
end
retval = retval .. lang:formatDate(formatString, dateText)
end
end
return retval .. '<small> (' .. name .. ')</small>'
end
function p.text(frame)
local args = frame:getParent().args
return p._text(args[1], args[2], args.v, args.s)
end
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
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
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] = { display = args[i + 1], args[i] }
end
i = i + 2
end
local retval = ''
for key, val in ipairs(dateOrder) do
if key == 1 then
retval = frame:expandTemplate{title = 'vgrtbl/text', args = { s = 1, v = v, dates[val].display, table.concat(dates[val], '/') }}
else
retval = retval .. '<br />' .. frame:expandTemplate{title = 'vgrtbl/text', args = { v = v, dates[val].display, table.concat(dates[val], '/') }}
end
end
return retval
end
end
return p