use super::{UnicodeProvider, UnicodeTheme};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Symbol {
Check,
X,
Exclamation,
Question,
At,
Hash,
Dollar,
Percent,
Ampersand,
Copyright,
Trademark,
Registered,
}
impl UnicodeProvider for Symbol {
fn get_char(&self, theme: UnicodeTheme) -> char {
match (self, theme) {
(Symbol::Check, UnicodeTheme::Minimal) => 'v',
(Symbol::Check, UnicodeTheme::Basic) => '✓',
(Symbol::Check, UnicodeTheme::Rich) => '✓',
(Symbol::Check, UnicodeTheme::Fancy) => '✅',
(Symbol::X, UnicodeTheme::Minimal) => 'X',
(Symbol::X, UnicodeTheme::Basic) => '✗',
(Symbol::X, UnicodeTheme::Rich) => '✖',
(Symbol::X, UnicodeTheme::Fancy) => '❌',
(Symbol::Exclamation, UnicodeTheme::Minimal) => '!',
(Symbol::Exclamation, UnicodeTheme::Basic) => '!',
(Symbol::Exclamation, UnicodeTheme::Rich) => '❗',
(Symbol::Exclamation, UnicodeTheme::Fancy) => '❗',
(Symbol::Question, UnicodeTheme::Minimal) => '?',
(Symbol::Question, UnicodeTheme::Basic) => '?',
(Symbol::Question, UnicodeTheme::Rich) => '❓',
(Symbol::Question, UnicodeTheme::Fancy) => '❓',
(Symbol::At, _) => '@',
(Symbol::Hash, _) => '#',
(Symbol::Dollar, _) => '$',
(Symbol::Percent, _) => '%',
(Symbol::Ampersand, _) => '&',
(Symbol::Copyright, UnicodeTheme::Minimal) => 'C',
(Symbol::Copyright, UnicodeTheme::Basic) => '©',
(Symbol::Copyright, UnicodeTheme::Rich) => '©',
(Symbol::Copyright, UnicodeTheme::Fancy) => '©',
(Symbol::Trademark, UnicodeTheme::Minimal) => 'T',
(Symbol::Trademark, UnicodeTheme::Basic) => '™',
(Symbol::Trademark, UnicodeTheme::Rich) => '™',
(Symbol::Trademark, UnicodeTheme::Fancy) => '™',
(Symbol::Registered, UnicodeTheme::Minimal) => 'R',
(Symbol::Registered, UnicodeTheme::Basic) => '®',
(Symbol::Registered, UnicodeTheme::Rich) => '®',
(Symbol::Registered, UnicodeTheme::Fancy) => '®',
}
}
}
pub mod chars {
use super::*;
pub const CHECK: Symbol = Symbol::Check;
pub const X: Symbol = Symbol::X;
pub const EXCLAMATION: Symbol = Symbol::Exclamation;
pub const QUESTION: Symbol = Symbol::Question;
pub const AT: Symbol = Symbol::At;
pub const HASH: Symbol = Symbol::Hash;
pub const DOLLAR: Symbol = Symbol::Dollar;
pub const PERCENT: Symbol = Symbol::Percent;
pub const AMPERSAND: Symbol = Symbol::Ampersand;
pub const COPYRIGHT: Symbol = Symbol::Copyright;
pub const TRADEMARK: Symbol = Symbol::Trademark;
pub const REGISTERED: Symbol = Symbol::Registered;
}