@@ -192,12 +192,33 @@ impl LanguageCountClient for PgPool {
192192 }
193193}
194194
195+ const MAPPING : [ ( & str , & str ) ; 9 ] = [
196+ ( "PyPy" , "Python" ) ,
197+ ( "Python (Cython" , "Cython" ) ,
198+ ( "Assembly x64" , "Assembly x64" ) ,
199+ ( "Awk" , "AWK" ) ,
200+ ( "IOI-Style" , "C++" ) ,
201+ ( "LuaJIT" , "Lua" ) ,
202+ ( "Seed7" , "Seed7" ) ,
203+ ( "Perl6" , "Raku" ) ,
204+ ( "Objective-C" , "Objective-C" ) ,
205+ ] ;
206+
195207fn simplify_language ( lang : & str ) -> String {
196- let re = Regex :: new ( r"\d*\s*\(.*\)" ) . unwrap ( ) ;
197- if lang. starts_with ( "Perl6" ) {
198- "Raku" . to_string ( )
199- } else {
200- re. replace ( lang, "" ) . to_string ( )
208+ for ( beginning, simplified) in MAPPING {
209+ if lang. starts_with ( beginning) {
210+ return simplified. to_string ( ) ;
211+ }
212+ }
213+
214+ let simplified = Regex :: new ( r"\s*[\d(\-].*" )
215+ . unwrap ( )
216+ . replace ( lang, "" )
217+ . to_string ( ) ;
218+
219+ match simplified. len ( ) {
220+ 0 => String :: from ( "Unknown" ) ,
221+ _ => simplified,
201222 }
202223}
203224
@@ -207,12 +228,31 @@ mod tests {
207228
208229 #[ test]
209230 fn test_simplify_language ( ) {
210- assert_eq ! ( simplify_language( "language1" ) , "language1 " ) ;
231+ assert_eq ! ( simplify_language( "language1" ) , "language " ) ;
211232 assert_eq ! ( simplify_language( "Perl (5)" ) , "Perl" ) ;
212233 assert_eq ! ( simplify_language( "Perl6" ) , "Raku" ) ;
213234 assert_eq ! ( simplify_language( "Fortran(GNU Fortran 9.2.1)" ) , "Fortran" ) ;
214235 assert_eq ! ( simplify_language( "Ada2012 (GNAT 9.2.1)" ) , "Ada" ) ;
215- assert_eq ! ( simplify_language( "PyPy2 (7.3.0)" ) , "PyPy" ) ;
216- assert_eq ! ( simplify_language( "Haxe (4.0.3); js" ) , "Haxe; js" ) ;
236+ assert_eq ! ( simplify_language( "Haxe (4.0.3); js" ) , "Haxe" ) ;
237+ assert_eq ! ( simplify_language( "C++11 (Clang++ 3.4)" ) , "C++" ) ;
238+ assert_eq ! ( simplify_language( "C++ 20 (gcc 12.2)" ) , "C++" ) ;
239+ assert_eq ! ( simplify_language( "C# 11.0 (.NET 7.0.7)" ) , "C#" ) ;
240+ assert_eq ! ( simplify_language( "C# 11.0 AOT (.NET 7.0.7)" ) , "C#" ) ;
241+ assert_eq ! ( simplify_language( "Visual Basic 16.9 (...)" ) , "Visual Basic" ) ;
242+ assert_eq ! ( simplify_language( "><> (fishr 0.1.0)" ) , "><>" ) ;
243+ assert_eq ! ( simplify_language( "プロデル (...)" ) , "プロデル" ) ;
244+
245+ // mapped individually
246+ assert_eq ! ( simplify_language( "Assembly x64" ) , "Assembly x64" ) ;
247+ assert_eq ! ( simplify_language( "Awk (GNU Awk 4.1.4)" ) , "AWK" ) ;
248+ assert_eq ! ( simplify_language( "IOI-Style C++ (GCC 5.4.1)" ) , "C++" ) ;
249+ assert_eq ! ( simplify_language( "LuaJIT (2.0.4)" ) , "Lua" ) ;
250+ assert_eq ! ( simplify_language( "Objective-C (Clang3.8.0)" ) , "Objective-C" ) ;
251+ assert_eq ! ( simplify_language( "PyPy2 (7.3.0)" ) , "Python" ) ;
252+ assert_eq ! ( simplify_language( "Python (Cython 0.29.34)" ) , "Cython" ) ;
253+ assert_eq ! ( simplify_language( "Cython (0.29.16)" ) , "Cython" ) ;
254+ assert_eq ! ( simplify_language( "Seed7 (Seed7 3.2.1)" ) , "Seed7" ) ;
255+
256+ assert_eq ! ( simplify_language( "1234" ) , "Unknown" ) ;
217257 }
218258}
0 commit comments