starry/md/
skin.rs

1use {
2    crossterm::style::{
3        Attribute::*,
4        Color::*,
5    },
6    minimad::Compound,
7    termimad::*,
8};
9
10pub fn make_skin(color: bool) -> MadSkin {
11    if color {
12        make_color_skin()
13    } else {
14        make_no_color_skin()
15    }
16}
17
18fn make_color_skin() -> MadSkin {
19    let mut skin = MadSkin::default();
20    skin.set_headers_fg(AnsiValue(178));
21    skin.headers[1].compound_style.remove_attr(Underlined);
22    skin.italic.remove_attr(Italic);
23    skin.bold.set_fg(White);
24    skin.inline_code = CompoundStyle::with_fg(Yellow);
25    skin.italic.set_fg(AnsiValue(204));
26    skin.special_chars.insert(
27        Compound::raw_str("U").code(),
28        StyledChar::from_fg_char(Green, '➚'),
29    );
30    skin.special_chars.insert(
31        Compound::raw_str("D").code(),
32        StyledChar::from_fg_char(Red, '➘'),
33    );
34    skin
35}
36
37fn make_no_color_skin() -> MadSkin {
38    let mut skin = MadSkin::no_style();
39    skin.special_chars
40        .insert(Compound::raw_str("U").code(), StyledChar::nude('➚'));
41    skin.special_chars
42        .insert(Compound::raw_str("D").code(), StyledChar::nude('➘'));
43    skin
44}