use super::TermTextSpans;
#[derive(Debug, Copy, Clone, Default)]
pub struct TermTextMetadata {
pub chars: usize,
pub columns: usize,
pub control_chars: usize,
pub control_bytes: usize,
}
impl TermTextMetadata {
pub fn from_text(text: &str) -> Self {
let mut res = TermTextMetadata::default();
res.add_length(text);
res
}
pub fn add_length(&mut self, text: &str) {
for span in TermTextSpans::new(text) {
self.chars += span.chars();
self.columns += span.columns();
if span.is_control() {
self.control_chars += span.chars();
self.control_bytes += span.text().len();
}
}
}
pub fn display_chars(&self) -> usize {
self.chars - self.control_chars
}
}