Browse Source

Make wikilinks relative

master
Silberengel 2 weeks ago
parent
commit
43d2e7717d
  1. 21
      src/processors/html-postprocess.ts

21
src/processors/html-postprocess.ts

@ -2,6 +2,7 @@ import { processMusicalNotation } from './music';
export interface PostProcessOptions { export interface PostProcessOptions {
enableMusicalNotation?: boolean; enableMusicalNotation?: boolean;
linkBaseURL?: string;
} }
/** /**
@ -31,11 +32,21 @@ export function postProcessHtml(html: string, options: PostProcessOptions = {}):
return `<a href="/notes?t=${encodedHashtag}" class="hashtag-link text-green-600 dark:text-green-400 hover:text-green-700 dark:hover:text-green-300 hover:underline">${escapedDisplay}</a>`; return `<a href="/notes?t=${encodedHashtag}" class="hashtag-link text-green-600 dark:text-green-400 hover:text-green-700 dark:hover:text-green-300 hover:underline">${escapedDisplay}</a>`;
}); });
// Convert wikilink:dtag[display] format to HTML // Convert WIKILINK:dtag|display placeholder format to HTML
processed = processed.replace(/wikilink:([^[]+)\[([^\]]+)\]/g, (_match, dTag, displayText) => { // Match WIKILINK:dtag|display, ensuring we don't match across HTML tags
const escapedDtag = dTag.replace(/"/g, '&quot;'); processed = processed.replace(/WIKILINK:([^|<>]+)\|([^<>\s]+)/g, (_match, dTag, displayText) => {
const escapedDisplay = displayText.replace(/"/g, '&quot;'); const escapedDtag = dTag.trim().replace(/"/g, '&quot;');
return `<span class="wikilink cursor-pointer text-blue-600 hover:text-blue-800 hover:underline border-b border-dotted border-blue-300" data-dtag="${escapedDtag}" data-display="${escapedDisplay}">${displayText}</span>`; const escapedDisplay = displayText.trim()
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;');
// Always use relative URL for wikilinks (works on any domain)
const url = `/events?d=${escapedDtag}`;
return `<a class="wikilink text-primary-600 dark:text-primary-500 hover:underline" data-dtag="${escapedDtag}" data-url="${url}" href="${url}">${escapedDisplay}</a>`;
}); });
// Convert nostr: links to HTML // Convert nostr: links to HTML

Loading…
Cancel
Save