Skip to content

Commit 8824094

Browse files
Copilotreakaleek
andcommitted
Fix cross-links to use absolute URLs with .md extensions
- Cross-links to markdown now become full URLs with .md extensions - Update logic to use MakeAbsoluteUrl + EnsureMarkdownExtension for cross-links - Remove unused ExtractMarkdownPath method - Update test expectations to match corrected behavior - Use pattern matching to fix code analysis warning Co-authored-by: reakaleek <[email protected]>
1 parent fdd97d2 commit 8824094

File tree

2 files changed

+6
-25
lines changed

2 files changed

+6
-25
lines changed

src/Elastic.Markdown/Myst/Renderers/LlmMarkdown/LlmInlineRenderers.cs

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ protected override void Write(LlmMarkdownRenderer renderer, LinkInline obj)
3939
var hasTargetNavigationRoot = obj.GetData($"Target{nameof(MarkdownFile.NavigationRoot)}") != null;
4040
var originalCrossLinkUrl = obj.GetData("originalCrossLinkUrl") as string;
4141
var isInternalMarkdownLink = !isCrossLink && hasTargetNavigationRoot;
42-
var isCrossLinkToMarkdown = isCrossLink && originalCrossLinkUrl != null && IsCrossLinkToMarkdown(originalCrossLinkUrl);
42+
var isCrossLinkToMarkdown = isCrossLink && originalCrossLinkUrl is not null && IsCrossLinkToMarkdown(originalCrossLinkUrl);
4343

4444
if (isInternalMarkdownLink)
4545
{
@@ -48,9 +48,10 @@ protected override void Write(LlmMarkdownRenderer renderer, LinkInline obj)
4848
}
4949
else if (isCrossLinkToMarkdown)
5050
{
51-
// For cross-links to markdown files, extract relative path with .md extension
52-
var markdownPath = ExtractMarkdownPath(originalCrossLinkUrl!);
53-
renderer.Writer.Write(markdownPath ?? string.Empty);
51+
// For cross-links to markdown files, use absolute URL with .md extension
52+
var absoluteUrl = LlmRenderingHelpers.MakeAbsoluteUrl(renderer, url);
53+
var urlWithMdExtension = EnsureMarkdownExtension(absoluteUrl);
54+
renderer.Writer.Write(urlWithMdExtension ?? string.Empty);
5455
}
5556
else
5657
{
@@ -104,26 +105,6 @@ private static bool IsCrossLinkToMarkdown(string originalCrossLinkUrl)
104105

105106
return false;
106107
}
107-
108-
/// <summary>
109-
/// Extracts the relative markdown path from a cross-link URL
110-
/// </summary>
111-
private static string? ExtractMarkdownPath(string originalCrossLinkUrl)
112-
{
113-
if (string.IsNullOrEmpty(originalCrossLinkUrl))
114-
return null;
115-
116-
// Parse the cross-link URI to extract the path
117-
if (Uri.TryCreate(originalCrossLinkUrl, UriKind.Absolute, out var uri))
118-
{
119-
var path = uri.AbsolutePath;
120-
if (path.StartsWith('/'))
121-
path = path.TrimStart('/');
122-
return path;
123-
}
124-
125-
return null;
126-
}
127108
}
128109

129110
public class LlmEmphasisInlineRenderer : MarkdownObjectRenderer<LlmMarkdownRenderer, EmphasisInline>

tests/authoring/LlmMarkdown/LlmMarkdownOutput.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,5 +560,5 @@ This is another page for testing internal links.
560560
generator |> convertsToNewLLM """
561561
This is a [link to another page](another-page.md).
562562
This is an [external link](https://example.com).
563-
This is a [cross-link](solutions/observability/apps/apm-server-binary.md).
563+
This is a [cross-link](https://docs-v3-preview.elastic.dev/elastic/docs-content/tree/main/solutions/observability/apps/apm-server-binary.md).
564564
"""

0 commit comments

Comments
 (0)