Module:Year sequence: Difference between revisions

From stencil.wiki
No edit summary
No edit summary
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(source, "%d%d%d%d") do
for year in string.gmatch(args[1], "%d%d%d%d") do
table.insert(a, tonumber(year))
table.insert(a, tonumber(year))
end
end

Revision as of 21:34, 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 year in a do
		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
		--[[RANGE ENDED WITH PREV]]--
		result = result .. prev
		range = false
	end
	return result
end

return p