in src/Elastic.Markdown/Myst/InlineParsers/DiagnosticLinkInlineParser.cs [295:324]
private static void UpdateLinkUrl(LinkInline link, MarkdownFile? linkMarkdown, string url, ParserContext context, string? anchor)
{
var newUrl = url;
if (linkMarkdown is not null)
{
// if url is null it's an anchor link
if (!string.IsNullOrEmpty(url))
newUrl = linkMarkdown.Url;
}
else
newUrl = UpdateRelativeUrl(context, url);
if (newUrl.EndsWith(".md"))
{
newUrl = newUrl.EndsWith($"{Path.DirectorySeparatorChar}index.md")
? newUrl.Remove(newUrl.LastIndexOf("index.md", StringComparison.Ordinal), "index.md".Length)
: newUrl.Remove(url.LastIndexOf(".md", StringComparison.Ordinal), ".md".Length);
}
// TODO this is hardcoded should be part of extension system
if (newUrl.EndsWith(".toml"))
newUrl = url[..^5];
link.Url = !string.IsNullOrEmpty(anchor)
? newUrl == context.CurrentUrlPath
? $"#{anchor}"
: $"{newUrl}#{anchor}"
: newUrl;
}