File tree 1 file changed +26
-8
lines changed
1 file changed +26
-8
lines changed Original file line number Diff line number Diff line change @@ -163,18 +163,36 @@ impl Language {
163
163
fn get_languages_stat ( languages : & tokei:: Languages ) -> Option < HashMap < Language , f64 > > {
164
164
let mut stats = HashMap :: new ( ) ;
165
165
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 ;
167
168
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 {
169
189
None
170
190
} 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 ;
177
194
}
195
+
178
196
Some ( stats)
179
197
}
180
198
}
You can’t perform that action at this time.
0 commit comments