private static void UpdateLinkUrl()

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;
	}