1use std::fmt;
2
3#[derive(Debug)]
4#[cfg_attr(feature = "clap", derive(clap::ValueEnum, Clone))]
5pub enum CowShape {
6 Clippy,
7 Cow,
8 Moose,
9 Ferris,
10}
11
12const COW: &str = r"
13 \ ^__^
14 \ (oo)\_______
15 (__)\ )\/\
16 ||----w |
17 || ||";
18
19const CLIPPY: &str = r"
20 \
21 \
22 __
23 / \
24 | |
25 @ @
26 | |
27 || |/
28 || ||
29 |\_/|
30 \___/";
31
32const FERRIS: &str = r"
33 \
34 \
35 _~^~^~_
36 \) / o o \ (/
37 '_ - _'
38 / '-----' \";
39
40const MOOSE: &str = r"
41 \
42 \ \_\_ _/_/
43 \ \__/
44 (oo)\_______
45 (__)\ )\/\
46 ||----w |
47 || ||";
48
49impl fmt::Display for CowShape {
50 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
51 let display = match self {
52 Self::Cow => COW,
53 Self::Clippy => CLIPPY,
54 Self::Ferris => FERRIS,
55 Self::Moose => MOOSE,
56 };
57 f.write_str(display)
58 }
59}