diff --git a/src/components/PlainTextWithCode.svelte b/src/components/PlainTextWithCode.svelte
new file mode 100644
index 0000000..7ef40f6
--- /dev/null
+++ b/src/components/PlainTextWithCode.svelte
@@ -0,0 +1,59 @@
+
+
+{#each segments as segment}
+ {#if segment.kind == 'text'}
+ {@const lines = segment.text.split("\n")}
+
+ {#each lines as line, i}
+ {#if i > 0}
{/if}{line}
+ {/each}
+ {:else if segment.kind == 'inlineCode'}
+ {segment.text}
+ {:else}
+
{segment.text}
+ {/if}
+{/each}
+
+
diff --git a/src/components/RichTextFromFacets.svelte b/src/components/RichTextFromFacets.svelte
index 1ce8a38..c907cea 100644
--- a/src/components/RichTextFromFacets.svelte
+++ b/src/components/RichTextFromFacets.svelte
@@ -2,10 +2,20 @@
import { RichText, type Facet } from '../../lib/rich_text_lite.js';
import { linkToHashtagPage } from '../router.js';
import { isValidURL } from '../utils.js';
+ import { CodeMarkupParser } from '../utils/code_markup_parser.js';
+ import PlainTextWithCode from './PlainTextWithCode.svelte';
- let { text, facets }: { text: string, facets: Facet[] } = $props();
+ type Props = {
+ text: string;
+ facets: Facet[] | undefined;
+ renderCode?: boolean;
+ }
- let richText = $derived(new RichText({ text, facets }));
+ let { text, facets, renderCode = false }: Props = $props();
+
+ let parser = $derived(new CodeMarkupParser(text));
+ let filteredFacets = $derived(renderCode ? parser.removeFacetsInCodeSegments(facets) : facets);
+ let richText = $derived(new RichText({ text, facets: filteredFacets }));
let segments = $derived(richText.segments());
@@ -21,10 +31,6 @@
{:else if segment.tag}
{segment.text}
{:else}
- {@const lines = segment.text.split("\n")}
-
- {#each lines as line, i}
- {#if i > 0}
-