use crate::lang::Languages;
pub struct ProjectStats {
pub language_line_map: [u32; Languages::COUNT],
pub total_files: u32,
pub total_lines: u32,
pub total_bytes: u64,
}
impl ProjectStats {
pub(crate) fn new() -> Self {
ProjectStats {
language_line_map: [0; Languages::COUNT],
total_files: 0,
total_lines: 0,
total_bytes: 0,
}
}
pub fn add(&mut self, lang: Languages, lines: u32, bytes: u64) {
self.language_line_map[lang.idx()] += lines;
self.total_files += 1;
self.total_lines += lines;
self.total_bytes += bytes;
}
pub fn merge(&mut self, other: &ProjectStats) {
for (i, &v) in other.language_line_map.iter().enumerate() {
self.language_line_map[i] += v;
}
self.total_files += other.total_files;
self.total_lines += other.total_lines;
self.total_bytes += other.total_bytes;
}
}