mtg_data/
planeswalker_type.rs

1#[derive(idris_derive::Idris)]
2#[idris(repr = usize)]
3#[derive(serde::Serialize, serde::Deserialize)]
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
5#[cfg_attr(feature = "ts_export", derive(ts_rs::TS))]
6pub enum PlaneswalkerType {
7    Abian,
8    Ajani,
9    Aminatou,
10    Angrath,
11    Arlinn,
12    Ashiok,
13    Bob,
14    Bahamut,
15    Basri,
16    Bolas,
17    Calix,
18    Chandra,
19    Comet,
20    Dack,
21    Dakkon,
22    Daretti,
23    Davriel,
24    Deb,
25    Dihada,
26    Domri,
27    Dovin,
28    Duck,
29    Dungeon,
30    Ellywick,
31    Elminster,
32    Elspeth,
33    Equipment,
34    Ersta,
35    Estrid,
36    Freyalise,
37    Garruk,
38    Gideon,
39    Grist,
40    Guff,
41    Huatli,
42    Inzerva,
43    Jace,
44    Jared,
45    Jaya,
46    Jeska,
47    Kaito,
48    Karn,
49    Kasmina,
50    Kaya,
51    Kiora,
52    Koth,
53    Liliana,
54    Lolth,
55    Lukka,
56    Luxior,
57    Master,
58    Minsc,
59    Mordenkainen,
60    Nahiri,
61    Narset,
62    Niko,
63    Nissa,
64    Nixilis,
65    Oko,
66    Quintorius,
67    Ral,
68    Rowan,
69    Saheeli,
70    Samut,
71    Sarkhan,
72    Serra,
73    Sivitri,
74    Sorin,
75    Svega,
76    Szat,
77    Tamiyo,
78    Tasha,
79    Teferi,
80    Teyo,
81    Tezzeret,
82    Tibalt,
83    Tyvar,
84    Ugin,
85    Urza,
86    Venser,
87    Vivien,
88    Vraska,
89    Vronos,
90    Wanderer,
91    Will,
92    Windgrace,
93    Wrenn,
94    Xenagos,
95    Yanggu,
96    Yanling,
97    Zariel,
98}
99
100impl std::str::FromStr for PlaneswalkerType {
101    type Err = crate::ParsingError;
102    fn from_str(s: &str) -> Result<Self, Self::Err> {
103        match s {
104            "abian" => Ok(Self::Abian),
105            "ajani" => Ok(Self::Ajani),
106            "aminatou" => Ok(Self::Aminatou),
107            "angrath" => Ok(Self::Angrath),
108            "arlinn" => Ok(Self::Arlinn),
109            "ashiok" => Ok(Self::Ashiok),
110            "b.o.b." => Ok(Self::Bob),
111            "bahamut" => Ok(Self::Bahamut),
112            "basri" => Ok(Self::Basri),
113            "bolas" => Ok(Self::Bolas),
114            "calix" => Ok(Self::Calix),
115            "chandra" => Ok(Self::Chandra),
116            "comet" => Ok(Self::Comet),
117            "dack" => Ok(Self::Dack),
118            "dakkon" => Ok(Self::Dakkon),
119            "daretti" => Ok(Self::Daretti),
120            "davriel" => Ok(Self::Davriel),
121            "deb" => Ok(Self::Deb),
122            "dihada" => Ok(Self::Dihada),
123            "domri" => Ok(Self::Domri),
124            "dovin" => Ok(Self::Dovin),
125            "duck" => Ok(Self::Duck),
126            "dungeon" => Ok(Self::Dungeon),
127            "ellywick" => Ok(Self::Ellywick),
128            "elminster" => Ok(Self::Elminster),
129            "elspeth" => Ok(Self::Elspeth),
130            "equipment" => Ok(Self::Equipment),
131            "ersta" => Ok(Self::Ersta),
132            "estrid" => Ok(Self::Estrid),
133            "freyalise" => Ok(Self::Freyalise),
134            "garruk" => Ok(Self::Garruk),
135            "gideon" => Ok(Self::Gideon),
136            "grist" => Ok(Self::Grist),
137            "guff" => Ok(Self::Guff),
138            "huatli" => Ok(Self::Huatli),
139            "inzerva" => Ok(Self::Inzerva),
140            "jace" => Ok(Self::Jace),
141            "jared" => Ok(Self::Jared),
142            "jaya" => Ok(Self::Jaya),
143            "jeska" => Ok(Self::Jeska),
144            "kaito" => Ok(Self::Kaito),
145            "karn" => Ok(Self::Karn),
146            "kasmina" => Ok(Self::Kasmina),
147            "kaya" => Ok(Self::Kaya),
148            "kiora" => Ok(Self::Kiora),
149            "koth" => Ok(Self::Koth),
150            "liliana" => Ok(Self::Liliana),
151            "lolth" => Ok(Self::Lolth),
152            "lukka" => Ok(Self::Lukka),
153            "luxior" => Ok(Self::Luxior),
154            "master" => Ok(Self::Master),
155            "minsc" => Ok(Self::Minsc),
156            "mordenkainen" => Ok(Self::Mordenkainen),
157            "nahiri" => Ok(Self::Nahiri),
158            "narset" => Ok(Self::Narset),
159            "niko" => Ok(Self::Niko),
160            "nissa" => Ok(Self::Nissa),
161            "nixilis" => Ok(Self::Nixilis),
162            "oko" => Ok(Self::Oko),
163            "quintorius" => Ok(Self::Quintorius),
164            "ral" => Ok(Self::Ral),
165            "rowan" => Ok(Self::Rowan),
166            "saheeli" => Ok(Self::Saheeli),
167            "samut" => Ok(Self::Samut),
168            "sarkhan" => Ok(Self::Sarkhan),
169            "serra" => Ok(Self::Serra),
170            "sivitri" => Ok(Self::Sivitri),
171            "sorin" => Ok(Self::Sorin),
172            "svega" => Ok(Self::Svega),
173            "szat" => Ok(Self::Szat),
174            "tamiyo" => Ok(Self::Tamiyo),
175            "tasha" => Ok(Self::Tasha),
176            "teferi" => Ok(Self::Teferi),
177            "teyo" => Ok(Self::Teyo),
178            "tezzeret" => Ok(Self::Tezzeret),
179            "tibalt" => Ok(Self::Tibalt),
180            "tyvar" => Ok(Self::Tyvar),
181            "ugin" => Ok(Self::Ugin),
182            "urza" => Ok(Self::Urza),
183            "venser" => Ok(Self::Venser),
184            "vivien" => Ok(Self::Vivien),
185            "vraska" => Ok(Self::Vraska),
186            "vronos" => Ok(Self::Vronos),
187            "wanderer" => Ok(Self::Wanderer),
188            "will" => Ok(Self::Will),
189            "windgrace" => Ok(Self::Windgrace),
190            "wrenn" => Ok(Self::Wrenn),
191            "xenagos" => Ok(Self::Xenagos),
192            "yanggu" => Ok(Self::Yanggu),
193            "yanling" => Ok(Self::Yanling),
194            "zariel" => Ok(Self::Zariel),
195            _ => Err(crate::ParsingError {
196                item: "PlaneswalkerType",
197                message: "provided source does not match",
198            }),
199        }
200    }
201}
202
203impl PlaneswalkerType {
204    pub fn as_str(&self) -> &'static str {
205        match self {
206            Self::Abian => "abian",
207            Self::Ajani => "ajani",
208            Self::Aminatou => "aminatou",
209            Self::Angrath => "angrath",
210            Self::Arlinn => "arlinn",
211            Self::Ashiok => "ashiok",
212            Self::Bob => "b.o.b.",
213            Self::Bahamut => "bahamut",
214            Self::Basri => "basri",
215            Self::Bolas => "bolas",
216            Self::Calix => "calix",
217            Self::Chandra => "chandra",
218            Self::Comet => "comet",
219            Self::Dack => "dack",
220            Self::Dakkon => "dakkon",
221            Self::Daretti => "daretti",
222            Self::Davriel => "davriel",
223            Self::Deb => "deb",
224            Self::Dihada => "dihada",
225            Self::Domri => "domri",
226            Self::Dovin => "dovin",
227            Self::Duck => "duck",
228            Self::Dungeon => "dungeon",
229            Self::Ellywick => "ellywick",
230            Self::Elminster => "elminster",
231            Self::Elspeth => "elspeth",
232            Self::Equipment => "equipment",
233            Self::Ersta => "ersta",
234            Self::Estrid => "estrid",
235            Self::Freyalise => "freyalise",
236            Self::Garruk => "garruk",
237            Self::Gideon => "gideon",
238            Self::Grist => "grist",
239            Self::Guff => "guff",
240            Self::Huatli => "huatli",
241            Self::Inzerva => "inzerva",
242            Self::Jace => "jace",
243            Self::Jared => "jared",
244            Self::Jaya => "jaya",
245            Self::Jeska => "jeska",
246            Self::Kaito => "kaito",
247            Self::Karn => "karn",
248            Self::Kasmina => "kasmina",
249            Self::Kaya => "kaya",
250            Self::Kiora => "kiora",
251            Self::Koth => "koth",
252            Self::Liliana => "liliana",
253            Self::Lolth => "lolth",
254            Self::Lukka => "lukka",
255            Self::Luxior => "luxior",
256            Self::Master => "master",
257            Self::Minsc => "minsc",
258            Self::Mordenkainen => "mordenkainen",
259            Self::Nahiri => "nahiri",
260            Self::Narset => "narset",
261            Self::Niko => "niko",
262            Self::Nissa => "nissa",
263            Self::Nixilis => "nixilis",
264            Self::Oko => "oko",
265            Self::Quintorius => "quintorius",
266            Self::Ral => "ral",
267            Self::Rowan => "rowan",
268            Self::Saheeli => "saheeli",
269            Self::Samut => "samut",
270            Self::Sarkhan => "sarkhan",
271            Self::Serra => "serra",
272            Self::Sivitri => "sivitri",
273            Self::Sorin => "sorin",
274            Self::Svega => "svega",
275            Self::Szat => "szat",
276            Self::Tamiyo => "tamiyo",
277            Self::Tasha => "tasha",
278            Self::Teferi => "teferi",
279            Self::Teyo => "teyo",
280            Self::Tezzeret => "tezzeret",
281            Self::Tibalt => "tibalt",
282            Self::Tyvar => "tyvar",
283            Self::Ugin => "ugin",
284            Self::Urza => "urza",
285            Self::Venser => "venser",
286            Self::Vivien => "vivien",
287            Self::Vraska => "vraska",
288            Self::Vronos => "vronos",
289            Self::Wanderer => "wanderer",
290            Self::Will => "will",
291            Self::Windgrace => "windgrace",
292            Self::Wrenn => "wrenn",
293            Self::Xenagos => "xenagos",
294            Self::Yanggu => "yanggu",
295            Self::Yanling => "yanling",
296            Self::Zariel => "zariel",
297        }
298    }
299}
300
301impl std::fmt::Display for PlaneswalkerType {
302    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
303        write!(f, "{}", self.as_str())
304    }
305}
306
307impl PlaneswalkerType {
308    pub fn all() -> impl Iterator<Item = Self> {
309        [
310            Self::Abian,
311            Self::Ajani,
312            Self::Aminatou,
313            Self::Angrath,
314            Self::Arlinn,
315            Self::Ashiok,
316            Self::Bob,
317            Self::Bahamut,
318            Self::Basri,
319            Self::Bolas,
320            Self::Calix,
321            Self::Chandra,
322            Self::Comet,
323            Self::Dack,
324            Self::Dakkon,
325            Self::Daretti,
326            Self::Davriel,
327            Self::Deb,
328            Self::Dihada,
329            Self::Domri,
330            Self::Dovin,
331            Self::Duck,
332            Self::Dungeon,
333            Self::Ellywick,
334            Self::Elminster,
335            Self::Elspeth,
336            Self::Equipment,
337            Self::Ersta,
338            Self::Estrid,
339            Self::Freyalise,
340            Self::Garruk,
341            Self::Gideon,
342            Self::Grist,
343            Self::Guff,
344            Self::Huatli,
345            Self::Inzerva,
346            Self::Jace,
347            Self::Jared,
348            Self::Jaya,
349            Self::Jeska,
350            Self::Kaito,
351            Self::Karn,
352            Self::Kasmina,
353            Self::Kaya,
354            Self::Kiora,
355            Self::Koth,
356            Self::Liliana,
357            Self::Lolth,
358            Self::Lukka,
359            Self::Luxior,
360            Self::Master,
361            Self::Minsc,
362            Self::Mordenkainen,
363            Self::Nahiri,
364            Self::Narset,
365            Self::Niko,
366            Self::Nissa,
367            Self::Nixilis,
368            Self::Oko,
369            Self::Quintorius,
370            Self::Ral,
371            Self::Rowan,
372            Self::Saheeli,
373            Self::Samut,
374            Self::Sarkhan,
375            Self::Serra,
376            Self::Sivitri,
377            Self::Sorin,
378            Self::Svega,
379            Self::Szat,
380            Self::Tamiyo,
381            Self::Tasha,
382            Self::Teferi,
383            Self::Teyo,
384            Self::Tezzeret,
385            Self::Tibalt,
386            Self::Tyvar,
387            Self::Ugin,
388            Self::Urza,
389            Self::Venser,
390            Self::Vivien,
391            Self::Vraska,
392            Self::Vronos,
393            Self::Wanderer,
394            Self::Will,
395            Self::Windgrace,
396            Self::Wrenn,
397            Self::Xenagos,
398            Self::Yanggu,
399            Self::Yanling,
400            Self::Zariel,
401        ].into_iter()
402    }
403}