37 lines
1.0 KiB
Rust
37 lines
1.0 KiB
Rust
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<Line<'static>>) {
|
|
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 == ' '))
|
|
}
|