//! 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, } } }