lcowsay/
shapes.rs

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}