mirror of https://github.com/MingweiSamuel/Riven
Add unknown variant to GameMode
parent
5daeab990a
commit
88124ecb3a
|
@ -6,16 +6,20 @@
|
||||||
// //
|
// //
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
|
|
||||||
use strum_macros::{ EnumString, Display, AsRefStr, IntoStaticStr };
|
use strum_macros::{ EnumString, IntoStaticStr };
|
||||||
|
|
||||||
/// League of Legends game mode, such as Classic,
|
/// League of Legends game mode, such as Classic,
|
||||||
/// ARAM, URF, One For All, Ascension, etc.
|
/// ARAM, URF, One For All, Ascension, etc.
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
#[derive(Eq, PartialEq, Hash)]
|
#[derive(Eq, PartialEq, Hash)]
|
||||||
#[derive(EnumString, Display, AsRefStr, IntoStaticStr)]
|
#[derive(EnumString, IntoStaticStr)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum GameMode {
|
pub enum GameMode {
|
||||||
|
// Catch-all variant for new, unknown game modes.
|
||||||
|
#[strum(default)]
|
||||||
|
UNKNOWN(String),
|
||||||
|
|
||||||
/// ARAM games
|
/// ARAM games
|
||||||
ARAM,
|
ARAM,
|
||||||
/// All Random Summoner's Rift games
|
/// All Random Summoner's Rift games
|
||||||
|
@ -62,4 +66,5 @@ pub enum GameMode {
|
||||||
URF,
|
URF,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string_enum_str!(GameMode);
|
||||||
serde_string!(GameMode);
|
serde_string!(GameMode);
|
||||||
|
|
|
@ -11,6 +11,7 @@ macro_rules! serde_string {
|
||||||
s.parse().map_err(serde::de::Error::custom)
|
s.parse().map_err(serde::de::Error::custom)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl serde::ser::Serialize for $name {
|
impl serde::ser::Serialize for $name {
|
||||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
where
|
where
|
||||||
|
@ -22,6 +23,25 @@ macro_rules! serde_string {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! string_enum_str {
|
||||||
|
( $name:ident ) => {
|
||||||
|
impl AsRef<str> for $name {
|
||||||
|
fn as_ref(&self) -> &str {
|
||||||
|
match self {
|
||||||
|
Self::UNKNOWN(string) => &*string,
|
||||||
|
known => known.into(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for $name {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
|
||||||
|
self.as_ref().fmt(f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
macro_rules! arr {
|
macro_rules! arr {
|
||||||
(
|
(
|
||||||
$( #[$attr:meta] )*
|
$( #[$attr:meta] )*
|
||||||
|
@ -35,7 +55,7 @@ macro_rules! arr {
|
||||||
macro_rules! newtype_enum {
|
macro_rules! newtype_enum {
|
||||||
{
|
{
|
||||||
$( #[$attr:meta] )*
|
$( #[$attr:meta] )*
|
||||||
$v:vis newtype_enum $name:ident($repr:ident) {
|
$v:vis newtype_enum $name:ident($repr:ty) {
|
||||||
$(
|
$(
|
||||||
$( #[$var_attr:meta] )*
|
$( #[$var_attr:meta] )*
|
||||||
$var_name:ident = $var_val:expr,
|
$var_name:ident = $var_val:expr,
|
||||||
|
@ -50,7 +70,7 @@ macro_rules! newtype_enum {
|
||||||
impl $name {
|
impl $name {
|
||||||
$(
|
$(
|
||||||
$( #[$var_attr] )*
|
$( #[$var_attr] )*
|
||||||
$v const $var_name: Self = Self( $var_val );
|
$v const $var_name: Self = Self($var_val);
|
||||||
)*
|
)*
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,16 +3,20 @@
|
||||||
const gameModes = require('./.gameModes.json');
|
const gameModes = require('./.gameModes.json');
|
||||||
}}{{= dotUtils.preamble() }}
|
}}{{= dotUtils.preamble() }}
|
||||||
|
|
||||||
use strum_macros::{ EnumString, Display, AsRefStr, IntoStaticStr };
|
use strum_macros::{ EnumString, IntoStaticStr };
|
||||||
|
|
||||||
/// League of Legends game mode, such as Classic,
|
/// League of Legends game mode, such as Classic,
|
||||||
/// ARAM, URF, One For All, Ascension, etc.
|
/// ARAM, URF, One For All, Ascension, etc.
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
#[derive(Eq, PartialEq, Hash)]
|
#[derive(Eq, PartialEq, Hash)]
|
||||||
#[derive(EnumString, Display, AsRefStr, IntoStaticStr)]
|
#[derive(EnumString, IntoStaticStr)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum GameMode {
|
pub enum GameMode {
|
||||||
|
// Catch-all variant for new, unknown game modes.
|
||||||
|
#[strum(default)]
|
||||||
|
UNKNOWN(String),
|
||||||
|
|
||||||
{{
|
{{
|
||||||
for (const e of gameModes) {
|
for (const e of gameModes) {
|
||||||
const desc = e['x-desc'] ? e['x-desc'].split('\n') : [];
|
const desc = e['x-desc'] ? e['x-desc'].split('\n') : [];
|
||||||
|
@ -26,4 +30,5 @@ pub enum GameMode {
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string_enum_str!(GameMode);
|
||||||
serde_string!(GameMode);
|
serde_string!(GameMode);
|
||||||
|
|
Loading…
Reference in New Issue