Module:Year sequence: Difference between revisions
Robertbaxter (talk | contribs) No edit summary |
Robertbaxter (talk | contribs) No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
local args = frame.args or frame:getParent().args | local args = frame.args or frame:getParent().args | ||
local a = {} | local a = {} | ||
for year in string.gmatch( | for year in string.gmatch(args[1], "%d%d%d%d") do | ||
table.insert(a, tonumber(year)) | table.insert(a, tonumber(year)) | ||
end | end | ||
Line 11: | Line 11: | ||
local prev = 0 | local prev = 0 | ||
local range = false | local range = false | ||
for year | for i = 1, #a do | ||
local year = a[i] | |||
if year == prev + 1 then | if year == prev + 1 then | ||
if not range then | if not range then | ||
Line 28: | Line 29: | ||
end | end | ||
if range then | if range then | ||
result = result .. prev | result = result .. prev | ||
range = false | range = false |
Latest revision as of 21:39, 21 December 2024
Documentation for this module may be created at Module:Year sequence/doc
local p = {}
function p.consolidate(frame)
local args = frame.args or frame:getParent().args
local a = {}
for year in string.gmatch(args[1], "%d%d%d%d") do
table.insert(a, tonumber(year))
end
table.sort(a)
local result = ""
local prev = 0
local range = false
for i = 1, #a do
local year = a[i]
if year == prev + 1 then
if not range then
result = result .. "–"
range = true
end
else
if range then
result = result .. prev
range = false
end
if result ~= "" then result = result .. ", " end
result = result .. year
end
prev = year
end
if range then
result = result .. prev
range = false
end
return result
end
return p