Module:Year sequence: Difference between revisions

From stencil.wiki
No edit summary
No edit summary
 
Line 11: Line 11:
local prev = 0
local prev = 0
local range = false
local range = false
for year in pairs(a) do
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

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