use ratatui::text::Span;
use super::DocumentLineKind;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DocumentLine {
pub source_line: usize,
pub spans: Vec<Span<'static>>,
pub kind: DocumentLineKind,
}
impl DocumentLine {
pub fn new(source_line: usize, spans: Vec<Span<'static>>, kind: DocumentLineKind) -> Self {
Self {
source_line,
spans,
kind,
}
}
pub fn plain(source_line: usize, text: impl Into<String>, kind: DocumentLineKind) -> Self {
Self::new(source_line, vec![Span::raw(text.into())], kind)
}
pub fn plain_text(&self) -> String {
self.spans
.iter()
.map(|span| span.content.as_ref())
.collect()
}
}