{{
    const dotUtils = require('./dotUtils.js');
    const gameModes = require('./.gameModes.json');
}}{{= dotUtils.preamble() }}

use strum_macros::{ EnumString, EnumVariantNames, IntoStaticStr };

/// League of Legends game mode, such as Classic,
/// ARAM, URF, One For All, Ascension, etc.
#[non_exhaustive]
#[derive(Debug, Clone)]
#[derive(Eq, PartialEq, Hash)]
#[derive(EnumString, EnumVariantNames, IntoStaticStr)]
#[repr(u8)]
pub enum GameMode {
    /// Catch-all variant for new, unknown game modes.
    #[strum(default)]
    UNKNOWN(String),

{{
    for (const e of gameModes) {
        const desc = e['x-desc'] ? e['x-desc'].split('\n') : [];
}}
{{~ desc :line }}
    /// {{= line }}
{{~}}
    {{= e['x-name'] }},
{{
    }
}}
}

serde_strum_unknown!(GameMode);