From 276ab6ea235aba0a691d44b2b0e7999273224c74 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 26 Jul 2022 18:51:54 +0000 Subject: feat(ui.rs): add wrap for blockquote --- src/ui.rs | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/ui.rs b/src/ui.rs index c16a572..5267eb6 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -73,10 +73,10 @@ pub fn ui( for (i, wrapped) in wrappeds.iter().enumerate() { $spans.push(Spans::from(format!(" {}{}", wrapped, { - if i == wrappeds.len() - 1 && wrappeds.len() != 1 { - "" - } else { + if i < wrappeds.len() - 1 && wrappeds.len() != 1 { "-" + } else { + "" } }))); } @@ -89,13 +89,30 @@ pub fn ui( wrap_split!(text, spans); }, germ::ast::Node::Blockquote(text) => { - spans.push(Spans::from(vec![ - Span::styled(" > ", Style::default().fg(Color::LightBlue)), - Span::styled( - text, - Style::default().add_modifier(Modifier::ITALIC), - ), - ])); + let wrappeds = text + .as_bytes() + .chunks((app.wrap_at as usize) - 5) + .map(|buf| { + #[allow(unsafe_code)] + unsafe { std::str::from_utf8_unchecked(buf) }.to_string() + }) + .collect::>(); + + for (i, wrapped) in wrappeds.iter().enumerate() { + spans.push(Spans::from(vec![ + Span::styled(" > ", Style::default().fg(Color::LightBlue)), + Span::styled( + format!("{}{}", wrapped.clone(), { + if i < wrappeds.len() && wrappeds.len() != 1 { + "-" + } else { + "" + } + }), + Style::default().add_modifier(Modifier::ITALIC), + ), + ])); + } } germ::ast::Node::Link { to, -- cgit v1.2.3