pub fn outline(content: &str, _max_lines: usize) -> String {
let buf = content.as_bytes();
if buf.is_empty() {
return "(empty)".to_string();
}
let total = memchr::memchr_iter(b'\n', buf).count() + 1;
let lines: Vec<&str> = content.lines().collect();
let mut out = Vec::new();
out.push(format!("columns: {}", lines[0]));
out.push(format!("rows: {}", total.saturating_sub(1)));
out.push(String::new());
let head_end = 6.min(lines.len()); for line in &lines[1..head_end] {
out.push(line.to_string());
}
if total > 9 {
out.push(format!("... {} rows omitted", total - 9));
out.push(String::new());
let tail_start = lines.len().saturating_sub(3);
for line in &lines[tail_start..] {
out.push(line.to_string());
}
} else if lines.len() > head_end {
for line in &lines[head_end..] {
out.push(line.to_string());
}
}
out.join("\n")
}