Module:Year in sports

local getArgs = require('Module:Arguments').getArgs

local sidebar = require('Module:Sidebar')

local list = require('Module:List')

local parser = mw.ext.ParserFunctions

local sports = {

"air sports",

"American football",

"aquatic sports",

"association football",

"badminton",

"baseball",

"basketball",

"bowling",

"chess",

"climbing",

"combat sports",

"cricket",

"cycling",

"equestrianism",

"esports",

"golf",

"gymnastics",

"ice sports",

"modern pentathlon",

"motorsport",

"racquetball",

"rugby union",

"sailing",

"skiing",

"squash",

"sumo",

"table tennis",

"tennis",

"triathlon",

"volleyball",

"weightlifting"

}

local p = {}

local function link(a, b)

if (not b) then

return "" .. a .. ""

end

return "" .. b .. ""

end

function p.main(frame)

local args = getArgs(frame)

return p._main(frame, args)

end

function p._main(frame, args)

local year = args[1] or args['year'] or os.date("%Y")

local what = args[2] or args['sport'] or "sports"

local inwhat = " in " .. what

local pages = {}

for i, sport in ipairs(sports) do

local s = year .. " in " .. sport

local page = mw.title.new(s, 0)

if (page.exists) then

table.insert(pages, link(s, sport:gsub("^%l", string.upper)))

end

end

local l = list.horizontal(pages)

local years = year

local y = year - 1

if (mw.title.new(y .. inwhat)) then

years = link(y .. inwhat, y) .. " " .. years

end

y = y - 1

if (mw.title.new(y .. inwhat)) then

years = link(y .. inwhat, y) .. " " .. years

end

y = y - 1

if (mw.title.new(y .. inwhat)) then

years = link(y .. inwhat, y) .. " " .. years

end

y = y - 1

if (mw.title.new(y .. inwhat)) then

years = link(y .. inwhat, "←") .. " " .. years

end

y = year + 1

if (mw.title.new(y .. inwhat)) then

years = years .. " " .. link(y .. inwhat, y)

end

y = y + 1

if (mw.title.new(y .. inwhat)) then

years = years .. " " .. link(y .. inwhat, y)

end

y = y + 1

if (mw.title.new(y .. inwhat)) then

years = years .. " " .. link(y .. inwhat, y)

end

y = y + 1

if (mw.title.new(y .. inwhat)) then

years = years .. link(y .. inwhat, "→")

end

local v = "Years"

if mw.title.new("List of years in " .. what) then

v = link("List of years in " .. what, "Years")

end

local passing = {

name = "Year in sports",

title = v .. " in " .. what .. "",

content1 = years,

content2 = "----",

heading3 = link(year .. " in sports"),

content4 = l

}

return sidebar.sidebar(frame, passing)

end

return p