Module:Versions

From Workers & Resources: Soviet Republic Official Wiki

Documentation for this module may be created at Module:Versions/doc

-- The list of released game versions, kept here so that Template:Infobox version
-- and Template:Navbox versions cannot drift apart. Add new releases to the table
-- below, oldest first, and both templates pick them up.

local p = {}

local versions = {
	{ series = '0.7', page = 'Patch 0.7.3', label = '0.7.3' },
	{ series = '0.7', page = 'Patch 0.7.4', label = '0.7.4' },
	{ series = '0.7', page = 'Patch 0.7.5', label = '0.7.5' },
	{ series = '0.7', page = 'Patch 0.7.6', label = '0.7.6' },
	{ series = '0.7', page = 'Patch 0.7.7', label = '0.7.7' },
	{ series = '0.7', page = 'Patch 0.7.8', label = '0.7.8' },
	{ series = '0.7', page = 'Patch 0.7.9', label = '0.7.9' },
	{ series = '0.8', page = 'Patch 0.8.0', label = '0.8.0' },
	{ series = '0.8', page = 'Patch 0.8.1', label = '0.8.1' },
	{ series = '0.8', page = 'Patch 0.8.2', label = '0.8.2' },
	{ series = '0.8', page = 'Patch 0.8.3', label = '0.8.3' },
	{ series = '0.8', page = 'Patch 0.8.4', label = '0.8.4' },
	{ series = '0.8', page = 'Patch 0.8.5', label = '0.8.5' },
	{ series = '0.8', page = 'Patch 0.8.6', label = '0.8.6' },
	{ series = '0.8', page = 'Patch 0.8.7', label = '0.8.7' },
	{ series = '0.8', page = 'Patch 0.8.8', label = '0.8.8' },
	{ series = '0.8', page = 'Patch 0.8.9', label = '0.8.9' },
	{ series = '0.9', page = 'Patch 0.9.0', label = '0.9.0' },
	{ series = '1.0', page = 'Update 1.0', label = '1.0' },
	{ series = '1.0', page = 'Update 1.0.0.2', label = '1.0.0.2' },
	{ series = '1.0', page = 'Update 1.0.0.3', label = '1.0.0.3' },
	{ series = '1.0', page = 'Update 1.0.0.4', label = '1.0.0.4' },
	{ series = '1.0', page = 'Update 1.0.0.7', label = '1.0.0.7' },
	{ series = '1.0', page = 'Update 1.0.0.10', label = '1.0.0.10' },
	{ series = '1.0', page = 'Update 1.0.0.19', label = '1.0.0.19' },
	{ series = '1.0', page = 'Update 1.0.0.20', label = '1.0.0.20' },
	{ series = '1.1', page = 'Update 1.1.0.7', label = '1.1.0.7' },
	{ series = '1.1', page = 'Update 1.1.0.8', label = '1.1.0.8' },
	{ series = '1.1', page = 'Update 1.1.0.9', label = '1.1.0.9' },
	{ series = '1.1', page = 'Update 1.1.0.10', label = '1.1.0.10' },
	{ series = '1.1', page = 'Update 1.1.0.11', label = '1.1.0.11' },
	{ series = '1.1', page = 'Update 1.1.0.12', label = '1.1.0.12' },
	{ series = '1.1', page = 'Update 1.1.0.16', label = '1.1.0.16' },
	{ series = '1.1', page = 'Update 1.1.0.17', label = '1.1.0.17' },
	{ series = '1.1', page = 'Update 1.1.0.20', label = '1.1.0.20' },
	{ series = '1.1', page = 'Update 1.1.1.4', label = '1.1.1.4' },
	{ series = '1.1', page = 'Update 1.1.1.5', label = '1.1.1.5' },
	{ series = '1.1', page = 'Update 1.1.1.6', label = '1.1.1.6' },
	{ series = '1.1', page = 'Update 1.1.1.7', label = '1.1.1.7' },
}

local function link( version )
	return '[[' .. version.page .. '|' .. version.label .. ']]'
end

-- Every version, oldest first, separated by {{dot}}.
function p.dots( frame )
	local out = {}
	for _, version in ipairs( versions ) do
		out[ #out + 1 ] = link( version )
	end
	local dot = frame:expandTemplate{ title = 'dot' }
	return table.concat( out, ' ' .. dot .. ' ' )
end

-- One series, newest first, as a bulleted list.
function p.list( frame )
	local series = frame.args.series
	local out = {}
	for i = #versions, 1, -1 do
		local version = versions[ i ]
		if series == nil or series == '' or version.series == series then
			out[ #out + 1 ] = '* ' .. link( version )
		end
	end
	return table.concat( out, '\n' )
end

return p