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}