{{
    const dotUtils = require('./dotUtils.js');
    const maps = require('./.maps.json');
    const groupedMaps = maps.groupBy(({ mapName }) =>
        dotUtils.changeCase.pascalCase(mapName.replace(/[ ']+/, '')));
}}{{= dotUtils.preamble() }}

use serde_repr::{ Serialize_repr, Deserialize_repr };
use num_enum::{ IntoPrimitive, TryFromPrimitive };

/// League of Legends maps.
#[derive(Debug, Copy, Clone)]
#[derive(Eq, PartialEq, Hash, PartialOrd, Ord)]
#[derive(Serialize_repr, Deserialize_repr)]
#[derive(IntoPrimitive, TryFromPrimitive)]
#[repr(u8)]
pub enum Map {
{{
    for (const [ groupName, colMaps ] of groupedMaps) {
}}

{{
        for (const [ i, { mapId, mapName, notes } ] of colMaps.entries()) {
            let name = groupName;
            if (i != colMaps.length - 1)
                name += dotUtils.changeCase.pascalCase(notes);
}}
    /// {{= mapName }}
    /// <br>{{= notes }}
    {{= name }} = {{= mapId }},
{{
        }
    }
}}
}