#[derive(Clone, PartialEq, Eq, Debug, Default)]
pub struct SessionStats {
pub added_lines: u64,
pub deleted_lines: u64,
pub input_tokens: u64,
pub output_tokens: u64,
}
impl SessionStats {
pub fn line_change_counts(diff: &str) -> (u64, u64) {
diff.lines()
.fold((0_u64, 0_u64), |(added_lines, deleted_lines), line| {
if line.starts_with('+') && !line.starts_with("+++") {
return (added_lines.saturating_add(1), deleted_lines);
}
if line.starts_with('-') && !line.starts_with("---") {
return (added_lines, deleted_lines.saturating_add(1));
}
(added_lines, deleted_lines)
})
}
}