diff --git a/src/processors/html-postprocess.ts b/src/processors/html-postprocess.ts index 79e1cbd..c77066b 100644 --- a/src/processors/html-postprocess.ts +++ b/src/processors/html-postprocess.ts @@ -2,6 +2,7 @@ import { processMusicalNotation } from './music'; export interface PostProcessOptions { enableMusicalNotation?: boolean; + linkBaseURL?: string; } /** @@ -31,11 +32,21 @@ export function postProcessHtml(html: string, options: PostProcessOptions = {}): return `${escapedDisplay}`; }); - // Convert wikilink:dtag[display] format to HTML - processed = processed.replace(/wikilink:([^[]+)\[([^\]]+)\]/g, (_match, dTag, displayText) => { - const escapedDtag = dTag.replace(/"/g, '"'); - const escapedDisplay = displayText.replace(/"/g, '"'); - return `${displayText}`; + // Convert WIKILINK:dtag|display placeholder format to HTML + // Match WIKILINK:dtag|display, ensuring we don't match across HTML tags + processed = processed.replace(/WIKILINK:([^|<>]+)\|([^<>\s]+)/g, (_match, dTag, displayText) => { + const escapedDtag = dTag.trim().replace(/"/g, '"'); + const escapedDisplay = displayText.trim() + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + + // Always use relative URL for wikilinks (works on any domain) + const url = `/events?d=${escapedDtag}`; + + return `${escapedDisplay}`; }); // Convert nostr: links to HTML