From d844fc7edb6314bf2422ea1b8bbd1c360f694f2e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Mar 2025 19:48:00 -0800 Subject: [PATCH] refac: inline citation handling --- .../Messages/Markdown/MarkdownTokens.svelte | 3 + src/lib/utils/index.ts | 75 ++++++++++--------- 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte index baecd8cd6..8de359a26 100644 --- a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte +++ b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte @@ -17,6 +17,7 @@ import Collapsible from '$lib/components/common/Collapsible.svelte'; import Tooltip from '$lib/components/common/Tooltip.svelte'; import ArrowDownTray from '$lib/components/icons/ArrowDownTray.svelte'; + import Source from './Source.svelte'; const dispatch = createEventDispatcher(); @@ -261,6 +262,8 @@ {@html html} {:else if token.text.includes(`` + } + ]; - // Replace {{char}} if char is provided - if (char !== undefined && char !== null) { - content = content.replace(charToken, char); - } + // Replace tokens outside code blocks only + const processOutsideCodeBlocks = (text, replacementFn) => { + return text + .split(/(```[\s\S]*?```|`[\s\S]*?`)/) + .map((segment) => { + return segment.startsWith('```') || segment.startsWith('`') + ? segment + : replacementFn(segment); + }) + .join(''); + }; - // Replace {{user}} if user is provided - if (user !== undefined && user !== null) { - content = content.replace(userToken, user); - } - - // Replace video ID tags with corresponding