From b2d7ee49c687844e3c96cf8b3e708aa9009ee0f5 Mon Sep 17 00:00:00 2001 From: Misode Date: Fri, 13 May 2022 02:15:25 +0200 Subject: [PATCH] Improve article link heuristics and overrides --- src/app/services/Changelogs.ts | 36 +++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/src/app/services/Changelogs.ts b/src/app/services/Changelogs.ts index 67c87a3a..ac2f3932 100644 --- a/src/app/services/Changelogs.ts +++ b/src/app/services/Changelogs.ts @@ -66,9 +66,28 @@ function parseVersion(version: unknown): string { const ARTICLE_PREFIX = 'https://www.minecraft.net/article/' const ARTICLE_OVERRIDES = new Map(Object.entries({ + '1.16-pre2': 'minecraft-1-16-pre-release-1', + '1.16-pre4': 'minecraft-1-16-pre-release-3', + '1.16-pre5': 'minecraft-1-16-pre-release-3', + '1.16-pre7': 'minecraft-1-16-pre-release-6', + '1.16-pre8': 'minecraft-1-16-pre-release-6', + '1.16-rc1': 'minecraft-1-16-release-candidate', + 1.16: 'nether-update-java', + '1.16.2-pre3': 'minecraft-1-16-2-pre-release-2', + '1.16.2-rc1': 'minecraft-1-16-2-pre-release-2', + '1.16.2-rc2': 'minecraft-1-16-2-pre-release-2', + '1.17-pre3': 'minecraft-1-17-pre-release-2', + '1.17-pre4': 'minecraft-1-17-pre-release-2', + '1.17-pre5': 'minecraft-1-17-pre-release-2', + '1.17.1-pre3': 'minecraft-1-17-1-pre-release-2', 1.17: 'caves---cliffs--part-i-out-today-java', + '1.18-pre3': 'minecraft-1-18-pre-release-2', + '1.18-pre4': 'minecraft-1-18-pre-release-2', + '1.18-pre5': 'minecraft-1-18-pre-release-2', + '1.18-pre7': 'minecraft-1-18-pre-release-6', + '1.18-pre8': 'minecraft-1-18-pre-release-6', 1.18: 'caves---cliffs--part-ii-out-today-java', - '1.18.2': 'minecraft-java-edition-1-18-2', + '1.18.2-pre3': 'minecraft-1-18-2-pre-release-2', })) export function getArticleLink(version: string): string | undefined { @@ -76,11 +95,18 @@ export function getArticleLink(version: string): string | undefined { if (override) { return ARTICLE_PREFIX + override } - if (version.match(/^\d\dw\d\d[a-z]$/)) { - return ARTICLE_PREFIX + 'minecraft-snapshot-' + version + let match + if ((match = version.match(/^(\d\dw\d\d)[a-z]$/)) && match[1]) { + return ARTICLE_PREFIX + 'minecraft-snapshot-' + match[1] + 'a' } - if (version.match(/^\d+\.\d+(\.\d+)?-(pre|rc)[0-9]+$/)) { - return ARTICLE_PREFIX + 'minecraft-' + version.replaceAll('.', '-').replaceAll('pre', 'pre-release-') + if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-pre([0-9]+)$/)) && match[1] && match[2]) { + return ARTICLE_PREFIX + 'minecraft-' + match[1].replaceAll('.', '-') + '-pre-release-' + match[2] + } + if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-rc[0-9]+$/)) && match[1]) { + return ARTICLE_PREFIX + 'minecraft-' + match[1].replaceAll('.', '-') + '-release-candidate-1' + } + if (version.match(/^\d+\.\d+\.\d+$/)) { + return ARTICLE_PREFIX + 'minecraft-java-edition-' + version.replaceAll('.', '-') } return undefined }