Skip to main content

deepseek_rust_cli/tui/colorizer/
utils.rs

1/// Truncate a result string for TUI display, keeping it readable.
2pub fn truncate_result(result: &str, max_chars: usize) -> String {
3    let result = result.trim();
4    if result.len() <= max_chars {
5        return result.to_string();
6    }
7    // Try to break at a newline
8    let truncate_at = result
9        .char_indices()
10        .nth(max_chars)
11        .map(|(i, _)| i)
12        .unwrap_or(result.len());
13    let truncated = &result[..truncate_at];
14    if let Some(last_nl) = truncated.rfind('\n') {
15        if last_nl > max_chars / 2 {
16            return format!(
17                "{}\n\x1b[2m... (truncated, {} total chars)\x1b[0m",
18                &result[..last_nl],
19                result.len()
20            );
21        }
22    }
23    format!(
24        "{}\x1b[2m... ({} total chars)\x1b[0m",
25        truncated,
26        result.len()
27    )
28}