@@ -305,29 +305,59 @@ impl Info {
305
305
306
306
fn get_language_field ( & self , title : & str ) -> String {
307
307
let mut language_field = String :: from ( "" ) ;
308
-
308
+ let language_bar_length = 26 ;
309
309
let pad = title. len ( ) + 2 ;
310
-
311
- let languages: Vec < ( String , f64 ) > = {
312
- let mut iter = self . languages . iter ( ) . map ( |x| ( format ! ( "{}" , x. 0 ) , x. 1 ) ) ;
310
+ let color_palette = vec ! [
311
+ Color :: Red ,
312
+ Color :: Green ,
313
+ Color :: Yellow ,
314
+ Color :: Blue ,
315
+ Color :: Magenta ,
316
+ Color :: Cyan ,
317
+ ] ;
318
+
319
+ let languages: Vec < ( String , f64 , Color ) > = {
320
+ let mut iter = self . languages . iter ( ) . enumerate ( ) . map ( |( i, x) | {
321
+ let color = if self . config . true_color {
322
+ x. 0 . get_colors ( true ) [ 0 ]
323
+ } else {
324
+ color_palette[ i % color_palette. len ( ) ]
325
+ } ;
326
+ ( format ! ( "{}" , x. 0 ) , x. 1 , color)
327
+ } ) ;
313
328
if self . languages . len ( ) > 6 {
314
329
let mut languages = iter. by_ref ( ) . take ( 6 ) . collect :: < Vec < _ > > ( ) ;
315
330
let other_sum = iter. fold ( 0.0 , |acc, x| acc + x. 1 ) ;
316
- languages. push ( ( "Other" . to_owned ( ) , other_sum) ) ;
331
+ languages. push ( ( "Other" . to_owned ( ) , other_sum, Color :: White ) ) ;
317
332
languages
318
333
} else {
319
334
iter. collect ( )
320
335
}
321
336
} ;
322
337
323
- for ( cnt, language) in languages. iter ( ) . enumerate ( ) {
338
+ let language_bar: String = languages
339
+ . iter ( )
340
+ . map ( |x| {
341
+ let bar_width = std:: cmp:: max (
342
+ ( x. 1 / 100. * language_bar_length as f64 ) . round ( ) as usize ,
343
+ 1 ,
344
+ ) ;
345
+ format ! ( "{:<width$}" , "" . on_color( x. 2 ) , width = bar_width)
346
+ } )
347
+ . collect ( ) ;
348
+
349
+ language_field. push_str ( & language_bar) ;
350
+
351
+ for ( i, language) in languages. iter ( ) . enumerate ( ) {
324
352
let formatted_number = format ! ( "{:.*}" , 1 , language. 1 ) ;
325
- let language_str =
326
- format ! ( "{} ({} %) " , language. 0 , formatted_number) . color ( self . text_colors . info ) ;
327
- if cnt != 0 && cnt % 2 == 0 {
353
+ let language_with_perc =
354
+ format ! ( "{} ({} %)" , language. 0 , formatted_number) . color ( self . text_colors . info ) ;
355
+ let language_chip = "\u{25CF} " . color ( language. 2 ) ;
356
+ let language_str = format ! ( "{} {} " , language_chip, language_with_perc) ;
357
+ if i % 2 == 0 {
328
358
language_field. push_str ( & format ! ( "\n {:<width$}{}" , "" , language_str, width = pad) ) ;
329
359
} else {
330
- language_field. push_str ( & format ! ( "{}" , language_str) ) ;
360
+ language_field. push_str ( & language_str. to_string ( ) ) ;
331
361
}
332
362
}
333
363
language_field
0 commit comments