lean_ctx_patterns/
prettier.rs1pub fn compress(output: &str) -> Option<String> {
4 let trimmed = output.trim();
5 if trimmed.is_empty() {
6 return Some("ok (formatted)".to_string());
7 }
8
9 if trimmed.contains("All matched files use Prettier code style") {
10 return Some("ok (all formatted)".to_string());
11 }
12
13 let unformatted: Vec<&str> = trimmed
14 .lines()
15 .filter(|l| {
16 let t = l.trim();
17 !t.is_empty()
18 && !t.starts_with("Checking")
19 && !t.starts_with("All matched")
20 && !t.contains("[warn]")
21 && !t.contains("[error]")
22 && t.contains('.')
23 })
24 .collect();
25
26 let warnings: Vec<&str> = trimmed.lines().filter(|l| l.contains("[warn]")).collect();
27
28 if !unformatted.is_empty() {
29 let files: Vec<String> = unformatted.iter().map(|l| l.trim().to_string()).collect();
30 return Some(format!(
31 "{} files need formatting:\n{}",
32 files.len(),
33 files.join("\n")
34 ));
35 }
36
37 if !warnings.is_empty() {
38 return Some(format!("{} warnings", warnings.len()));
39 }
40
41 if trimmed.lines().count() <= 5 {
42 return Some(trimmed.to_string());
43 }
44
45 let lines: Vec<&str> = trimmed.lines().collect();
46 Some(format!(
47 "{}\n{}",
48 lines[..5].join("\n"),
49 super::elision_marker(lines.len() - 5)
50 ))
51}