Module:Team appearances list: Difference between revisions

Source: Wikipedia, the free encyclopedia.
Content deleted Content added
adding Olympics, Commonwealth Games, FINA World Aquatics Champ.
Q&D (I haven't studied it) fix for end_year problem reported at WT:WikiProject Templates
Line 119: Line 119:
if not begin_year or y >= begin_year then
if not begin_year or y >= begin_year then
processYear(y)
processYear(y)
elseif end_year and y <= end_year then
elseif end_year and y >= end_year then
break
break
end
end

Revision as of 21:55, 13 November 2016

-- This module implements [[Template:Team appearances list]].
-- [SublimeLinter luacheck-globals:mw]

local p = {}
local compressSparseArray = require('Module:TableTools').compressSparseArray
local hlist = require('Module:List').horizontal
local valueUnion = require('Module:Set').valueUnion

local COMPETITIONS = {
	["All-Africa Games"] = {
		1965, 1973, 1978, 1987, 1991, 1995, 1999, 2003, 2007, 2011, 2015},
	
	-----Asian Games----
	["Asian Games"] = {
		1951, 1954, 1958, 1962, 1966, 1970, 1974, 1978, 1985, 1986, 1990, 1994, 
		1998, 2002, 2006, 2010, 2014, 2018, 2022, 2026},
	["Asian Beach Games"] = {
		2008, 2010, 2012, 2014, 2016},
	["Asian Para Games"] = {
		2010, 2014, 2018},
	["Asian Youth Games"] = {
		2009, 2013, 2021},
	["Asian Winter Games"] = {
		1986, 1990, 1996, 1999, 2003, 2007, 2011, 2017},
	["East Asian Games"] = {
		1993, 1997, 2001, 2005, 2009, 2013},
	["South Asian Games"] = {
		1984, 1985, 1987, 1989, 1991, 1993, 1995, 1999, 2004, 2006, 2010, 2016,
		2018},
	["Southeast Asian Games"] = {
		1959, 1961, 1963, 1965, 1967, 1969, 1971, 1973, 1975, 1977, 1979, 1981,
		1983, 1985, 1987, 1989, 1991, 1993, 1995, 1997, 1999, 2001, 2003, 2005,
		2007, 2009, 2011, 2013, 2015, 2017, 2019, 2021, 2023, 2025},
	["West Asian Games"] = {
		1997, 2002, 2005, 2016},
	
	-----Commonwealth Games-----
	["Commonwealth Games"] = {
		1930, 1934, 1938, 1950, 1954, 1958, 1962, 1966, 1970, 1974, 1978, 1982,
		1986, 1990, 1994, 1998, 2002, 2006, 2010, 2014, 2018, 2022, 2026},
	["Commonwealth Youth Games"] = {
		2000, 2004, 2008, 2011, 2015, 2017, 2021},
	
	-----European Games-----
	["European Athletics Championships"] = {
		1934, 1938, 1946, 1950, 1954, 1958, 1962, 1966, 1969, 1971, 1974, 1978,
		1982, 1986, 1990, 1994, 1998, 2002, 2006, 2010, 2012, 2014, 2016},
	["European Games"] = {
		2015, 2019},
	["Mediterranean Games"] = {
		1951, 1955, 1959, 1963, 1967, 1971, 1975, 1979, 1983, 1987, 1991, 1993,
		1997, 2001, 2005, 2009, 2013, 2017},
	
	----- Olympics -----
	["Summer Olympics"] = {
		1896, 1900, 1904, 1908, 1912, 1920, 1924, 1928, 1932, 1936, 1948, 1952,
		1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000,
		2004, 2008, 2012, 2016, 2020, 2024, 2028},
	["Summer Paralympics"] = {
		1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004,
		2008, 2012, 2016, 2020, 2024, 2028},
	["Summer Youth Olympics"] = {
		2010, 2014, 2018},
	["Winter Olympics"] = {
		1924, 1928, 1932, 1936, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976,
		1980, 1984, 1988, 1992, 1994, 1998, 2002, 2006, 2010, 2014, 2018, 2022,
		2026},
	["Winter Paralympics"] = {
		1976, 1980, 1984, 1988, 1992, 1994, 1998, 2002, 2006, 2010, 2014, 2018,
		2022},
	["Winter Youth Olympics"] = {
		2012, 2016, 2020},
	
	----- Misc / World -----
	["FEI World Equestrian Games"] = {
		1990, 1994, 1998, 2002, 2006, 2010, 2014, 2018},
	["Pan American Games"] = {
		1951, 1955, 1959, 1963, 1967, 1971, 1975, 1979, 1983, 1987, 1991, 1995,
		1999, 2003, 2007, 2011, 2015, 2019},
	["Summer Universiade"] = {
		1959, 1961, 1963, 1965, 1967, 1970, 1973, 1975, 1977, 1979, 1981, 1983,
		1985, 1987, 1989, 1991, 1993, 1995, 1997, 1999, 2001, 2003, 2005, 2007,
		2009, 2011, 2013, 2015, 2017},
	["Winter Universiade"] = {
		1960, 1962, 1964, 1966, 1968, 1972, 1978, 1981, 1983, 1985, 1987, 1989,
		1991, 1993, 1995, 1997, 1999, 2001, 2003, 2005, 2007, 2009, 2011, 2013,
		2015, 2017},
	["World Aquatics Championships"] = {
		1973, 1975, 1978, 1982, 1986, 1991, 1994, 1998, 2001, 2003, 2005, 2007,
		2009, 2011, 2013, 2015},
	["World Championships in Athletics"] = {
		1983, 1987, 1991, 1993, 1995, 1997, 1999, 2001, 2003, 2005, 2007, 2009,
		2011, 2013, 2015, 2017},}

function p._main(args)
	local begin_year = args.begin_year and tonumber(args.begin_year)
	local end_year = args.end_year and tonumber(args.end_year)

	local appearances = {}
	local absences = {}
	for _, v in pairs(compressSparseArray(args)) do
		absences[string.sub(v, 1, 4)] = mw.getCurrentFrame():expandTemplate{
			title='Gray', args={v}}
	end

	local function processYear(y)
		y = tostring(y)
		if absences[y] then
			table.insert(appearances, absences[y])
			absences[y] = nil
		else
			table.insert(appearances, string.format(
				'[[%s at the %s %s|%s]]', args.team, y, args.competition, y))
		end
	end

	if COMPETITIONS[args.competition] then
		for _, y in pairs(COMPETITIONS[args.competition]) do
			if not begin_year or y >= begin_year then
				processYear(y)
			elseif end_year and y >= end_year then
				break
			end
		end
	elseif not tonumber(args.interval) then
		error('Interval is not a number: ' .. tostring(args.interval))
	else
		for y = begin_year, (end_year or os.date('%Y')+args.interval),
				args.interval do
			processYear(y)
		end
	end
	return hlist(valueUnion(absences, appearances))
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {parentOnly=true})
	return p._main(args)
end

return p