{{
    const dotUtils = require('./dotUtils.js');
    const queues = require('./.queues.json');

    const groupedQueues = queues.groupBy(({ map, description }) => {
        const name = dotUtils.changeCase.constantCase((map || '').replace("'", ''))
            + '_' + dotUtils.changeCase.constantCase((description || '').replace(/\s+(?=\d)/g, ''));
        return name;
    });
}}{{= dotUtils.preamble() }}

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

/// League of Legends matchmaking queue.
#[cfg_attr(feature = "nightly", non_exhaustive)]
#[derive(Debug, Copy, Clone)]
#[derive(Eq, PartialEq)]
#[derive(Serialize_repr, Deserialize_repr)]
#[derive(IntoPrimitive, TryFromPrimitive)]
#[repr(u16)]
pub enum Queue {
{{
    for (let [ groupName, colQueues ] of groupedQueues) {
}}

{{
        for (let { queueId, map, description, notes } of colQueues) {
            const doc = (description ? description + ' games on ' : '') + map;
            const deprecated = (notes || '').toUpperCase().indexOf('DEPRECATED') >= 0;
            const name = groupName + ((colQueues.length > 1 && deprecated) ? `_DEPRECATED_${queueId}` : '');
}}
    /// {{= doc }}.
{{? notes }}
    /// <br>{{= notes }}
{{?}}
{{? deprecated}}
    #[deprecated(note="{{= notes }}")]
{{?}}
    {{= name }} = {{= queueId }},
{{
        }
    }
}}
}