139 lines
3.8 KiB
Rust
139 lines
3.8 KiB
Rust
//! Editions information
|
|
|
|
use serde::Deserialize;
|
|
use strum::{Display, EnumString};
|
|
|
|
pub enum EditionBlock {
|
|
Bw,
|
|
Xy,
|
|
Sm,
|
|
Ssh,
|
|
Sv,
|
|
Meg,
|
|
}
|
|
|
|
#[derive(Clone, Copy, Display, Debug, Hash, PartialEq, Eq, EnumString, Deserialize)]
|
|
#[strum(ascii_case_insensitive, serialize_all = "lowercase")]
|
|
#[serde(rename_all = "UPPERCASE")]
|
|
pub enum EditionCode {
|
|
/// Sword and Shield
|
|
Ssh,
|
|
/// SV Promos
|
|
#[serde(alias = "PR-SV")]
|
|
Svp,
|
|
/// Scarlet and Violet
|
|
Svi,
|
|
/// Paldea Evolved
|
|
Pal,
|
|
///Obsidian Flames
|
|
Obf,
|
|
/// 151
|
|
Mew,
|
|
/// Paradox Rift
|
|
Par,
|
|
/// Paldean Fates
|
|
Paf,
|
|
/// Temporal Forces
|
|
Tef,
|
|
/// Twilight Masquerade
|
|
Twm,
|
|
/// Shrouded Fable
|
|
Sfa,
|
|
/// Stellar Crown
|
|
Scr,
|
|
/// Surging Sparks
|
|
Ssp,
|
|
/// Prismatic Evolutions
|
|
Pre,
|
|
/// Journey Together
|
|
Jtg,
|
|
/// Destined Rivals
|
|
Dri,
|
|
/// Black Bolt
|
|
Blk,
|
|
/// White Flare
|
|
Wht,
|
|
/// Mega Evolution Promos
|
|
Mep,
|
|
/// Mega Evolution
|
|
Meg,
|
|
/// Phantasmal Flames
|
|
Pfl,
|
|
}
|
|
|
|
impl EditionCode {
|
|
pub fn edition_num(self) -> &'static str {
|
|
match self {
|
|
EditionCode::Ssh => "SWSH1",
|
|
EditionCode::Svp => "SVP",
|
|
EditionCode::Svi => "SV01",
|
|
EditionCode::Pal => "SV02",
|
|
EditionCode::Obf => "SV03",
|
|
EditionCode::Mew => "SV3_pt5",
|
|
EditionCode::Par => "SV04",
|
|
EditionCode::Paf => "SV4pt5",
|
|
EditionCode::Tef => "SV05",
|
|
EditionCode::Twm => "SV06",
|
|
EditionCode::Sfa => "SV6pt5",
|
|
EditionCode::Scr => "SV07",
|
|
EditionCode::Ssp => "SV08",
|
|
EditionCode::Pre => "SV8pt5",
|
|
EditionCode::Jtg => "SV9",
|
|
EditionCode::Dri => "SV10",
|
|
EditionCode::Blk => "SV10pt5ZSV",
|
|
EditionCode::Wht => "SV10pt5RSV",
|
|
EditionCode::Mep => "MEP",
|
|
EditionCode::Meg => "MEG1",
|
|
EditionCode::Pfl => "MEG2",
|
|
}
|
|
}
|
|
|
|
pub fn edition_slug(self) -> &'static str {
|
|
match self {
|
|
EditionCode::Ssh => "sword-shield",
|
|
EditionCode::Svi => "scarlet-violet",
|
|
EditionCode::Svp => "scarlet-violet-promos",
|
|
EditionCode::Pal => "paldea-evolved",
|
|
EditionCode::Obf => "obsidian-flames",
|
|
EditionCode::Mew => "151",
|
|
EditionCode::Par => "paradox-rift",
|
|
EditionCode::Paf => "paldean-fates",
|
|
EditionCode::Tef => "temporal-forces",
|
|
EditionCode::Twm => "twilight-masquerade",
|
|
EditionCode::Sfa => "shrouded-fable",
|
|
EditionCode::Scr => "stellar-crown",
|
|
EditionCode::Ssp => "surging-sparks",
|
|
EditionCode::Pre => "prismatic-evolutions",
|
|
EditionCode::Jtg => "journey-together",
|
|
EditionCode::Dri => "destined-rivals",
|
|
EditionCode::Blk | EditionCode::Wht => "black-white",
|
|
EditionCode::Meg => "mega-evolution",
|
|
EditionCode::Mep => "mega-evolution-promos",
|
|
EditionCode::Pfl => "phantasmal-flames",
|
|
}
|
|
}
|
|
|
|
pub fn block(self) -> EditionBlock {
|
|
match self {
|
|
EditionCode::Ssh => EditionBlock::Ssh,
|
|
EditionCode::Svi
|
|
| EditionCode::Svp
|
|
| EditionCode::Pal
|
|
| EditionCode::Obf
|
|
| EditionCode::Mew
|
|
| EditionCode::Par
|
|
| EditionCode::Paf
|
|
| EditionCode::Tef
|
|
| EditionCode::Twm
|
|
| EditionCode::Sfa
|
|
| EditionCode::Scr
|
|
| EditionCode::Ssp
|
|
| EditionCode::Pre
|
|
| EditionCode::Jtg
|
|
| EditionCode::Dri
|
|
| EditionCode::Blk
|
|
| EditionCode::Wht => EditionBlock::Sv,
|
|
EditionCode::Meg | EditionCode::Mep | EditionCode::Pfl => EditionBlock::Meg,
|
|
}
|
|
}
|
|
}
|