From 1f94b922e7e80e958b3fcf0b9d154038a81076af Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 31 Mar 2026 08:00:41 -0300 Subject: wiki-data: don't eat
in inline links --- src/common-util/wiki-data.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/common-util/wiki-data.js') diff --git a/src/common-util/wiki-data.js b/src/common-util/wiki-data.js index 4c7f66f4..4bae0125 100644 --- a/src/common-util/wiki-data.js +++ b/src/common-util/wiki-data.js @@ -1,6 +1,6 @@ // Utility functions for interacting with wiki data. -import {accumulateSum, chunkByConditions, empty, unique} from './sugar.js'; +import {accumulateSum, chunkByConditions, empty, re, unique} from './sugar.js'; import {sortByDate} from './sort.js'; // This is a duplicate binding of filterMultipleArrays that's included purely @@ -593,7 +593,20 @@ export function* matchMarkdownLinks(markdownSource, {marked}) { } export function* matchInlineLinks(source) { - const plausibleLinkRegexp = /\b[a-z]*:\/\/[^ ]*?(?=(?:[,.!?]*)(?:\s|$))/gm; + const plausibleLinkRegexp = re('gmi')` + ${/\b[a-z]*:\/\//} + ${/.*?/} + + (?=${[ + // Ordinary in-sentence punctuation doesn't terminate the + // un-greedy URL match above, but it shouldn't be counted + // as part of the link either, if it's at the end. + /(?:[,.!?]*)/, + + // Actual terminators. + /(?:\s|$|
)/, + ]}) + `; let plausibleMatch = null; while (plausibleMatch = plausibleLinkRegexp.exec(source)) { -- cgit 1.3.0-6-gf8a5