//! Editions information use strum::{Display, EnumString}; pub enum EditionBlock { Bw, Xy, Sm, Ssh, Sv, } #[derive(Clone, Copy, Display, Debug, Hash, PartialEq, Eq, EnumString)] #[strum(ascii_case_insensitive, serialize_all = "lowercase")] pub enum EditionCode { /// Sword and Shield Ssh, /// Scarlet and Violer 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, } impl EditionCode { pub fn edition_num(self) -> &'static str { match self { EditionCode::Ssh => "SWSH1", 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", } } pub fn edition_slug(self) -> &'static str { match self { EditionCode::Ssh => "sword-shield", EditionCode::Svi => "scarlet-violet", 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", } } pub fn block(self) -> EditionBlock { match self { EditionCode::Ssh => EditionBlock::Ssh, EditionCode::Svi | EditionCode::Pal | EditionCode::Obf | EditionCode::Mew | EditionCode::Par | EditionCode::Paf | EditionCode::Tef | EditionCode::Twm | EditionCode::Sfa | EditionCode::Scr | EditionCode::Ssp | EditionCode::Pre => EditionBlock::Sv, } } }