use crate::cli::theme::DEFAULT_COLOR;
use ratatui::Frame;
use ratatui::buffer::Buffer;
use scope::display::theme::color_enabled;
pub(crate) fn strip_color(buf: &mut Buffer) {
for cell in &mut buf.content {
cell.fg = DEFAULT_COLOR;
cell.bg = DEFAULT_COLOR;
cell.underline_color = DEFAULT_COLOR;
}
}
pub(crate) fn finish_frame(f: &mut Frame) {
if !color_enabled() {
strip_color(f.buffer_mut());
}
}
#[cfg(test)]
mod tests {
use super::*;
use ratatui::layout::Rect;
use ratatui::style::{Color, Modifier, Style};
#[test]
fn test_strip_color_keeps_modifiers_and_text() {
let mut buf = Buffer::empty(Rect::new(0, 0, 4, 1));
buf.set_string(
0,
0,
"ab",
Style::new().fg(Color::Red).bg(Color::Blue).bold(),
);
strip_color(&mut buf);
let cell = &buf[(0, 0)];
assert_eq!(cell.symbol(), "a");
assert_eq!(cell.fg, Color::Reset);
assert_eq!(cell.bg, Color::Reset);
assert!(cell.modifier.contains(Modifier::BOLD));
}
}