From 22a5217493812cbb4883ab710bf40dacf98b7a55 Mon Sep 17 00:00:00 2001 From: wpbirney Date: Thu, 2 Jun 2022 14:03:31 -0400 Subject: [PATCH] Enabled background color functionality renamed ColorCode to Color and Color to Paint bump version to 0.1.1 --- Cargo.toml | 2 +- readme.md | 6 ++--- src/color.rs | 47 +++++++++++++++++++++++++++++++++ src/lib.rs | 73 ++++++++++++---------------------------------------- 4 files changed, 68 insertions(+), 60 deletions(-) create mode 100644 src/color.rs diff --git a/Cargo.toml b/Cargo.toml index 4315670..3623693 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mirc" -version = "0.1.0" +version = "0.1.1" edition = "2021" authors = ["wpbirney ) -> fmt::Result { + match self { + Color::White => write!(f, "00"), + Color::Black => write!(f, "01"), + Color::Blue => write!(f, "02"), + Color::Green => write!(f, "03"), + Color::Red => write!(f, "04"), + Color::Brown => write!(f, "05"), + Color::Purple => write!(f, "06"), + Color::Orange => write!(f, "07"), + Color::Yellow => write!(f, "08"), + Color::LightGreen => write!(f, "09"), + Color::Cyan => write!(f, "10"), + Color::LightCyan => write!(f, "11"), + Color::LightBlue => write!(f, "12"), + Color::Pink => write!(f, "13"), + Color::Grey => write!(f, "14"), + Color::LightGrey => write!(f, "15"), + Color::Raw(c) => write!(f, "{:02}", c), + Color::Unset => Ok(()), + } + } +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index fc2189a..fed716b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,78 +1,39 @@ +pub mod color; + +use color::Color; + use std::fmt; -pub enum ColorCode { - White, - Black, - Blue, - Green, - Red, - Brown, - Purple, - Orange, - Yellow, - LightGreen, - Cyan, - LightCyan, - LightBlue, - Pink, - Grey, - LightGrey, - Raw(i32), - Unset, -} - -impl fmt::Display for ColorCode { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - ColorCode::White => write!(f, "00"), - ColorCode::Black => write!(f, "01"), - ColorCode::Blue => write!(f, "02"), - ColorCode::Green => write!(f, "03"), - ColorCode::Red => write!(f, "04"), - ColorCode::Brown => write!(f, "05"), - ColorCode::Purple => write!(f, "06"), - ColorCode::Orange => write!(f, "07"), - ColorCode::Yellow => write!(f, "08"), - ColorCode::LightGreen => write!(f, "09"), - ColorCode::Cyan => write!(f, "10"), - ColorCode::LightCyan => write!(f, "11"), - ColorCode::LightBlue => write!(f, "12"), - ColorCode::Pink => write!(f, "13"), - ColorCode::Grey => write!(f, "14"), - ColorCode::LightGrey => write!(f, "15"), - ColorCode::Raw(c) => write!(f, "{:02}", c), - ColorCode::Unset => Ok(()), - } - } -} - -pub struct Color { - fg: ColorCode, - bg: ColorCode, +pub struct Paint { + fg: Color, + bg: Color, content: T, } -impl fmt::Display for Color +impl fmt::Display for Paint where T: fmt::Display, { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "\x03{:02}{}\x03", self.fg, self.content) + match self.bg { + Color::Unset => write!(f, "\x03{:02}{}\x03", self.fg, self.content), + _ => write!(f, "\x03{:02},{:02}{}\x03", self.fg, self.bg, self.content), + } } } macro_rules! constructors_for { ($T:ty, $($name:ident: $color:ident),*) => ($( #[inline] - pub fn $name(content: $T) -> Color<$T> { - Color::new(ColorCode::$color, ColorCode::Unset, content) + pub fn $name(content: $T) -> Paint<$T> { + Paint::new(Color::$color, Color::Unset, content) } )*); } -impl Color { - pub fn new(fg: ColorCode, bg: ColorCode, content: T) -> Color { - Color { +impl Paint { + pub fn new(fg: Color, bg: Color, content: T) -> Paint { + Paint { fg, bg, content,