From 7679a149be594d60824db63a56c7552ba7fc6af5 Mon Sep 17 00:00:00 2001 From: red Date: Sat, 18 Jan 2025 02:22:37 +0100 Subject: [PATCH] Fix: Add more edge cases in tests and rework regexp --- src/inline/view-plugin.spec.ts | 42 ++++++++++++++++++++++++++++++++++ src/inline/view-plugin.ts | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/inline/view-plugin.spec.ts b/src/inline/view-plugin.spec.ts index c6af686..cb15d77 100644 --- a/src/inline/view-plugin.spec.ts +++ b/src/inline/view-plugin.spec.ts @@ -21,6 +21,11 @@ const GITHUB_URLS = [ 'https://github.com/nathonius/obsidian-github-link/pull/157/commits', 'https://github.com/nathonius/obsidian-github-link/pull/157/commits/42d35e4c7070d2ec9f3bacf7f4a0561d9d7346bb', 'https://github.com/nathonius/obsidian-github-link/pull/157/files', + // MORE EDGE CASES + 'https://github.com/kwsch/pk3DS/blob/e40d3ce5548d75821f31785dc88cd465610530a6/pk3DS.Core/CTR/Images/BCLIM.cs', + 'https://github.com/kwsch/png2bclim/blob/master/png2bclim/BCLIM.cs', + 'https://github.com/kwsch/png2bclim', + 'https://github.com/ihaveamac/3DS-rom-tools/wiki/Extract-a-game-or-application-in-.3ds-or-.cci-format' ] describe('matchRegexp', () => { @@ -50,6 +55,34 @@ describe('matchRegexp', () => { }); }); + test('matches URLs followed by punctuation', () => { + GITHUB_URLS.forEach(url => { + const text = `First ${url}, then some text.`; + const match = text.match(matchRegexp); + expect(match).not.toBeNull(); + expect(match![0]).toBe(url); + }); + }); + + test('matches URLs ending a sentence with an interrogative', () => { + GITHUB_URLS.forEach(url => { + const text = `You heard about ${url}?`; + const match = text.match(matchRegexp); + expect(match).not.toBeNull(); + expect(match![0]).toBe(url); + }); + }); + + test('matches URLs followed by multiple punctuation', () => { + GITHUB_URLS.forEach(url => { + const text = `A test for ${url}...`; + const match = text.match(matchRegexp); + expect(match).not.toBeNull(); + expect(match![0]).toBe(url); + }); + }); + + test('matches URLs ending a sentence that segues to another', () => { GITHUB_URLS.forEach(url => { const text = `That's the end of the line for ${url}. But not for this variable!`; @@ -78,4 +111,13 @@ describe('matchRegexp', () => { expect(match![0]).toBe(url); }) }); + + test('matches URLs quoted', () => { + GITHUB_URLS.forEach(url => { + const text = `Obama chuckled: you mean "${url}" ?`; + const match = text.match(matchRegexp); + expect(match).not.toBeNull(); + expect(match![0]).toBe(url); + }) + }); }); diff --git a/src/inline/view-plugin.ts b/src/inline/view-plugin.ts index 46374c9..63856e6 100644 --- a/src/inline/view-plugin.ts +++ b/src/inline/view-plugin.ts @@ -36,7 +36,7 @@ class InlineTagWidget extends WidgetType { } } -export const matchRegexp = /(?