1
+ use regex:: Regex ;
1
2
use std:: collections:: HashMap ;
2
3
3
4
use colored:: Color ;
@@ -360,9 +361,9 @@ impl Language {
360
361
361
362
pub fn get_language_stats (
362
363
dir : & str ,
363
- exclude : Vec < & str > ,
364
+ ignored_directories : Vec < & str > ,
364
365
) -> Result < ( Vec < ( Language , f64 ) > , usize ) > {
365
- let tokei_langs = project_languages ( & dir, exclude ) ;
366
+ let tokei_langs = project_languages ( & dir, ignored_directories ) ;
366
367
let languages_stat =
367
368
Language :: get_languages_stat ( & tokei_langs) . ok_or ( Error :: SourceCodeNotFound ) ?;
368
369
let mut stat_vec: Vec < ( _ , _ ) > = languages_stat. into_iter ( ) . collect ( ) ;
@@ -384,7 +385,7 @@ fn get_total_loc(languages: &tokei::Languages) -> usize {
384
385
. fold ( 0 , |sum, val| sum + val. code )
385
386
}
386
387
387
- fn project_languages ( dir : & str , exclude : Vec < & str > ) -> tokei:: Languages {
388
+ fn project_languages ( dir : & str , ignored_directories : Vec < & str > ) -> tokei:: Languages {
388
389
use tokei:: Config ;
389
390
390
391
let mut languages = tokei:: Languages :: new ( ) ;
@@ -394,7 +395,22 @@ fn project_languages(dir: &str, exclude: Vec<&str>) -> tokei::Languages {
394
395
..Config :: default ( )
395
396
} ;
396
397
397
- languages. get_statistics ( & [ & dir] , & exclude, & tokei_config) ;
398
+ if !ignored_directories. is_empty ( ) {
399
+ let re = Regex :: new ( r"((.*)+/)+(.*)" ) . unwrap ( ) ;
400
+ let mut v = Vec :: with_capacity ( ignored_directories. len ( ) ) ;
401
+ for ignored in ignored_directories {
402
+ if re. is_match ( ignored) {
403
+ v. push ( format ! ( "{}{}" , "**/" , ignored) ) ;
404
+ } else {
405
+ v. push ( String :: from ( ignored) ) ;
406
+ }
407
+ }
408
+ let ignored_directories_for_ab: Vec < & str > = v. iter ( ) . map ( |x| & * * x) . collect ( ) ;
409
+ languages. get_statistics ( & [ & dir] , & ignored_directories_for_ab, & tokei_config) ;
410
+ } else {
411
+ languages. get_statistics ( & [ & dir] , & ignored_directories, & tokei_config) ;
412
+ }
413
+
398
414
languages
399
415
}
400
416
0 commit comments