use ratatui::text::Line; use ratatui::text::Span; /// Clone a borrowed ratatui `Line` into an owned `'static` line. pub fn line_to_static(line: &Line<'_>) -> Line<'static> { Line { style: line.style, alignment: line.alignment, spans: line .spans .iter() .map(|s| Span { style: s.style, content: std::borrow::Cow::Owned(s.content.to_string()), }) .collect(), } } /// Append owned copies of borrowed lines to `out`. pub fn push_owned_lines<'a>(src: &[Line<'a>], out: &mut Vec>) { for l in src { out.push(line_to_static(l)); } } /// Consider a line blank if it has no spans or only spans whose contents are /// empty or consist solely of spaces (no tabs/newlines). pub fn is_blank_line_spaces_only(line: &Line<'_>) -> bool { if line.spans.is_empty() { return true; } line.spans .iter() .all(|s| s.content.is_empty() || s.content.chars().all(|c| c == ' ')) }