Skip to content

Commit 2acd7e9

Browse files
authored
Merge pull request #265 from o2sh/fix/markdown-jupyter-stats
Handle Markdown and Jupyter Notebooks
2 parents 37379a5 + 9bd6e89 commit 2acd7e9

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

src/onefetch/language.rs

+26-8
Original file line numberDiff line numberDiff line change
@@ -163,18 +163,36 @@ impl Language {
163163
fn get_languages_stat(languages: &tokei::Languages) -> Option<HashMap<Language, f64>> {
164164
let mut stats = HashMap::new();
165165

166-
let sum_language_code: usize = languages.iter().map(|(_, v)| v.code).sum();
166+
for (language_type, language) in languages.iter() {
167+
let mut code = language.code;
167168

168-
if sum_language_code == 0 {
169+
let has_children = !language.children.is_empty();
170+
171+
if has_children {
172+
for reports in language.children.values() {
173+
for stats in reports.iter().map(|r| r.stats.summarise()) {
174+
code += stats.code;
175+
}
176+
}
177+
}
178+
179+
if code == 0 {
180+
continue;
181+
}
182+
183+
stats.insert(Language::from(*language_type), code as f64);
184+
}
185+
186+
let total: f64 = stats.iter().map(|(_, v)| v).sum();
187+
188+
if total.abs() < f64::EPSILON {
169189
None
170190
} else {
171-
for (k, v) in languages.iter() {
172-
let code = v.code as f64;
173-
stats.insert(
174-
Language::from(*k),
175-
(code / sum_language_code as f64) * 100.00,
176-
);
191+
for (_, val) in stats.iter_mut() {
192+
*val /= total;
193+
*val *= 100_f64;
177194
}
195+
178196
Some(stats)
179197
}
180198
}

0 commit comments

Comments
 (0)