diff options
| author | Fuwn <[email protected]> | 2022-07-26 18:51:54 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2022-07-26 18:51:54 +0000 |
| commit | 276ab6ea235aba0a691d44b2b0e7999273224c74 (patch) | |
| tree | 9f99e4a3d50ba83de6176ff0bf42c55f1c26aee0 | |
| parent | fix(ui.rs): reimplement text wrap (diff) | |
| download | sydney-276ab6ea235aba0a691d44b2b0e7999273224c74.tar.xz sydney-276ab6ea235aba0a691d44b2b0e7999273224c74.zip | |
feat(ui.rs): add wrap for blockquote
| -rw-r--r-- | src/ui.rs | 37 |
1 files changed, 27 insertions, 10 deletions
@@ -73,10 +73,10 @@ pub fn ui<B: tui::backend::Backend>( 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<B: tui::backend::Backend>( 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::<Vec<_>>(); + + 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, |