unicode_rs/unicode/
status.rs1use super::{UnicodeProvider, UnicodeTheme};
5
6#[derive(Debug, Clone, Copy)]
8pub enum Status {
9 Online,
11 Offline,
13 Busy,
15 Idle,
17 Error,
19 Warning,
21 Success,
23 Unknown,
25}
26
27impl UnicodeProvider for Status {
28 fn get_char(&self, theme: UnicodeTheme) -> char {
29 match (self, theme) {
30 (Status::Online, UnicodeTheme::Minimal) => '+',
31 (Status::Online, UnicodeTheme::Basic) => '●',
32 (Status::Online, UnicodeTheme::Rich) => '●',
33 (Status::Online, UnicodeTheme::Fancy) => '🟢',
34
35 (Status::Offline, UnicodeTheme::Minimal) => '-',
36 (Status::Offline, UnicodeTheme::Basic) => '○',
37 (Status::Offline, UnicodeTheme::Rich) => '○',
38 (Status::Offline, UnicodeTheme::Fancy) => '⚪',
39
40 (Status::Busy, UnicodeTheme::Minimal) => '*',
41 (Status::Busy, UnicodeTheme::Basic) => '◐',
42 (Status::Busy, UnicodeTheme::Rich) => '◐',
43 (Status::Busy, UnicodeTheme::Fancy) => '🔄',
44
45 (Status::Idle, UnicodeTheme::Minimal) => 'o',
46 (Status::Idle, UnicodeTheme::Basic) => '◯',
47 (Status::Idle, UnicodeTheme::Rich) => '◯',
48 (Status::Idle, UnicodeTheme::Fancy) => '💤',
49
50 (Status::Error, UnicodeTheme::Minimal) => 'X',
51 (Status::Error, UnicodeTheme::Basic) => '✗',
52 (Status::Error, UnicodeTheme::Rich) => '✗',
53 (Status::Error, UnicodeTheme::Fancy) => '❌',
54
55 (Status::Warning, UnicodeTheme::Minimal) => '!',
56 (Status::Warning, UnicodeTheme::Basic) => '⚠',
57 (Status::Warning, UnicodeTheme::Rich) => '⚠',
58 (Status::Warning, UnicodeTheme::Fancy) => '⚠',
59
60 (Status::Success, UnicodeTheme::Minimal) => '+',
61 (Status::Success, UnicodeTheme::Basic) => '✓',
62 (Status::Success, UnicodeTheme::Rich) => '✓',
63 (Status::Success, UnicodeTheme::Fancy) => '✅',
64
65 (Status::Unknown, UnicodeTheme::Minimal) => '?',
66 (Status::Unknown, UnicodeTheme::Basic) => '?',
67 (Status::Unknown, UnicodeTheme::Rich) => '❓',
68 (Status::Unknown, UnicodeTheme::Fancy) => '❓',
69 }
70 }
71}
72
73pub mod chars {
75 use super::*;
76
77 pub const ONLINE: Status = Status::Online;
78 pub const OFFLINE: Status = Status::Offline;
79 pub const BUSY: Status = Status::Busy;
80 pub const IDLE: Status = Status::Idle;
81 pub const ERROR: Status = Status::Error;
82 pub const WARNING: Status = Status::Warning;
83 pub const SUCCESS: Status = Status::Success;
84 pub const UNKNOWN: Status = Status::Unknown;
85}