diff options
author | bscan <10503608+bscan@users.noreply.github.com> | 2023-10-29 19:10:54 -0400 |
---|---|---|
committer | bscan <10503608+bscan@users.noreply.github.com> | 2023-10-29 19:10:54 -0400 |
commit | 9d170b009cc9c84dbf79fcd339e92e04b7d59e33 (patch) | |
tree | ed85ae2f7c6f8c0877149251ab0ad05e22827340 | |
parent | e28bf30c15f49f8ecbac61fd642d071023b8b6f8 (diff) | |
download | PerlNavigator-9d170b009cc9c84dbf79fcd339e92e04b7d59e33.zip |
Fixing pod display issue for code blocks with links inside
-rw-r--r-- | server/src/pod.ts | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/server/src/pod.ts b/server/src/pod.ts index 672c9fb..f8d2497 100644 --- a/server/src/pod.ts +++ b/server/src/pod.ts @@ -379,6 +379,9 @@ const processInlineElements = (line: string): string => { line = line.replaceAll('`', tempPlaceholder); + // WWW::Mechanize is a good test for this one. Code blocks with embedded link + line = line.replace(/C<([^<>]*)L<< (?:.+?\|\/?)?(.+?) >>([^<>]*)>/g, "C<< $1 $2 $3 >>"); + // Handle code (C<code>), while allowing E<> replacements line = line.replace(/C<((?:[^<>]|[EL]<[^<>]+>)+?)>/g, (match, code) => escapeBackticks(code)); @@ -393,26 +396,27 @@ const processInlineElements = (line: string): string => { line = line.replace(new RegExp(tempPlaceholder, 'g'), '\\`'); // Handle bold (B<bold>) - line = line.replace(/B<([^>]+)>/g, "**$1**"); + line = line.replace(/B<([^<>]+)>/g, "**$1**"); + line = line.replace(/B<< (.+?) >>/g, "**$1**"); // Handle italics (I<italic>) - line = line.replace(/I<([^>]+)>/g, "*$1*"); - line = line.replace(/I<< (.+?) >>>/g, "*$1*"); + line = line.replace(/I<([^<>]+)>/g, "*$1*"); + line = line.replace(/I<< (.+?) >>/g, "*$1*"); // Handle links (L<name>), URLS auto-link in vscode's markdown line = line.replace(/L<(http[^>]+)>/g, " $1 "); - line = line.replace(/L<([^>]+)>/g, "`$1`"); + line = line.replace(/L<([^<>]+)>/g, "`$1`"); line = line.replace(/L<< (.*?) >>/g, "`$1`"); // Handle non-breaking spaces (S<text>) - line = line.replace(/S<([^>]+)>/g, "$1"); + line = line.replace(/S<([^<>]+)>/g, "$1"); // Handle file names (F<name>), converting to italics - line = line.replace(/F<([^>]+)>/g, "*$1*"); + line = line.replace(/F<([^<>]+)>/g, "*$1*"); // Handle index entries (X<entry>), ignoring as Markdown doesn't have an index - line = line.replace(/X<([^>]+)>/g, ""); + line = line.replace(/X<([^<>]+)>/g, ""); // Escape HTML entities last since we use them above line = escapeHTML(line); |