From c1b8040ae2d4c528af8346953a073c100e580e62 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 19 Aug 2023 16:39:01 +0200 Subject: [PATCH] Add helper for splitting a long line into multiple lines. --- crates/aiken-project/src/pretty.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/aiken-project/src/pretty.rs b/crates/aiken-project/src/pretty.rs index a9b6182d..77ddaa97 100644 --- a/crates/aiken-project/src/pretty.rs +++ b/crates/aiken-project/src/pretty.rs @@ -1,3 +1,5 @@ +use std::cmp; + pub fn ansi_len(s: &str) -> usize { String::from_utf8(strip_ansi_escapes::strip(s).unwrap()) .unwrap() @@ -120,3 +122,22 @@ pub fn style_if(styled: bool, s: String, apply_style: fn(String) -> String) -> S s } } + +pub fn multiline(max_len: usize, s: String) -> Vec { + let mut xs = Vec::new(); + let mut i = 0; + let len = s.len(); + loop { + let lo = i * max_len; + let hi = cmp::min(len - 1, lo + max_len - 1); + + if lo >= len { + break; + } + + let chunk = &s[lo..hi]; + xs.push(chunk.to_string()); + i += 1; + } + xs +}