@@ -192,12 +192,33 @@ impl LanguageCountClient for PgPool {
192
192
}
193
193
}
194
194
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
+
195
207
fn 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,
201
222
}
202
223
}
203
224
@@ -207,12 +228,31 @@ mod tests {
207
228
208
229
#[ test]
209
230
fn test_simplify_language ( ) {
210
- assert_eq ! ( simplify_language( "language1" ) , "language1 " ) ;
231
+ assert_eq ! ( simplify_language( "language1" ) , "language " ) ;
211
232
assert_eq ! ( simplify_language( "Perl (5)" ) , "Perl" ) ;
212
233
assert_eq ! ( simplify_language( "Perl6" ) , "Raku" ) ;
213
234
assert_eq ! ( simplify_language( "Fortran(GNU Fortran 9.2.1)" ) , "Fortran" ) ;
214
235
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" ) ;
217
257
}
218
258
}
0 commit comments