From c48fc91134cdd8ed6cdc4f075c87d536bd6bf419 Mon Sep 17 00:00:00 2001 From: defplus Date: Sat, 16 Sep 2023 11:17:38 +0900 Subject: [PATCH 1/2] Update LanguageNormalizer.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2023年のAtCoder言語アップデートで 言語選択肢に "C++ 20 (gcc 12.2)" や "C# 11.9 (.NET 7.0.7)" など、言語名とカッコ書きの間にバージョン番号が入るケースがあり、既存のコードでは、これらが"C++ ", "C# 11." などに正規化されていました。これらを"C++", "C#" などに正規化するよう、replaceで用いている正規表現に修正を加えました。 --- atcoder-problems-frontend/src/utils/LanguageNormalizer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atcoder-problems-frontend/src/utils/LanguageNormalizer.ts b/atcoder-problems-frontend/src/utils/LanguageNormalizer.ts index 1eb5e9915..9bf8e1119 100644 --- a/atcoder-problems-frontend/src/utils/LanguageNormalizer.ts +++ b/atcoder-problems-frontend/src/utils/LanguageNormalizer.ts @@ -2,6 +2,6 @@ export const normalizeLanguage = (language: string): string => { if (language.startsWith("Perl6")) { return "Raku"; } else { - return language.replace(/\d*\s*\(.*\)$/, ""); + return language.replace(/\s*(\d+(\.\d+)*)*\s*\(.*\)$/, ""); } }; From e064b5fc0786e6a34b3bdc5fe53363b8257d2190 Mon Sep 17 00:00:00 2001 From: defplus Date: Sat, 16 Sep 2023 11:19:23 +0900 Subject: [PATCH 2/2] Update LanguageNormalizer.test.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LanguageNormalizer の変更によって、正規化の結果が修正される言語選択肢についての、テストを作成しました。 --- .../src/utils/LanguageNormalizer.test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/atcoder-problems-frontend/src/utils/LanguageNormalizer.test.ts b/atcoder-problems-frontend/src/utils/LanguageNormalizer.test.ts index 8652054c3..a9441b650 100644 --- a/atcoder-problems-frontend/src/utils/LanguageNormalizer.test.ts +++ b/atcoder-problems-frontend/src/utils/LanguageNormalizer.test.ts @@ -5,6 +5,12 @@ test("normalize language", () => { expect(normalizeLanguage("Perl6 (rakudo-star 2016.01)")).toBe("Raku"); expect(normalizeLanguage("Rust (1.42.0)")).toBe("Rust"); expect(normalizeLanguage("C++11 (Clang++ 3.4)")).toBe("C++"); + expect(normalizeLanguage("C++ 20 (gcc 12.2)")).toBe("C++"); expect(normalizeLanguage("Scala (2.11.7)")).toBe("Scala"); + expect(normalizeLanguage("Scala 3.3.0 (Scala Native 0.4.14)")).toBe("Scala"); expect(normalizeLanguage("Fortran(GNU Fortran 9.2.1)")).toBe("Fortran"); + expect(normalizeLanguage("C# 11.9 (.NET 7.0.7)")).toBe("C#"); + expect(normalizeLanguage("F# 7.0 (.NET 7.0.7)")).toBe("F#"); + expect(normalizeLanguage("Visual Basic 16.9 (.NET 7.0.7)")).toBe("Visual Basic"); + expect(normalizeLanguage("TypeScript 5.1 (Node.js 18.16.1)")).toBe("TypeScript"); });