aocleaderboard 0.4.0

Merge multiple Advent of Code leaderboards
use crate::aoc::*;
use crate::AppSettings;
use rocket_contrib::templates::Template;
use serde::Serialize;

pub fn render_events(settings: &AppSettings, year: EventYear) -> Template {
    let latest_year = match settings.latest_event_year {
        Some(y) => y.max(latest_event_year()),
        _ => latest_event_year(),
    };
    let events = (FIRST_EVENT_YEAR..=latest_year).rev().collect::<Vec<_>>();
    let context = Context { year, events };
    Template::render("events", &context)
}

#[derive(Serialize)]
struct Context {
    year: EventYear,
    events: Vec<EventYear>,
}