Browse Source

Merge branch 'salihozkara/docsImprovements' into salihozkara/abpUnited

pull/20272/head
Salih 2 years ago
parent
commit
810fe04bb6
  1. 66
      modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs

66
modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs

@ -82,23 +82,41 @@ namespace Volo.Docs.Markdown
string documentLocalDirectory, string documentLocalDirectory,
string languageCode) string languageCode)
{ {
return Regex.Replace(content, MarkdownLinkRegExp, delegate (Match match) return NormalizeLinksByRegexPattern(MarkdownLinkRegExp, 3, 1, content, projectShortName, version, documentLocalDirectory, languageCode);
}
private string NormalizeAnchorLinks(string projectShortName, string version, string documentLocalDirectory,
string languageCode, string normalized)
{
return NormalizeLinksByRegexPattern(AnchorLinkRegExp, 1, 2, normalized, projectShortName, version, documentLocalDirectory, languageCode);
}
private string NormalizeLinksByRegexPattern(string regexPattern,
int linkGroupIndex,
int displayTextGroupIndex,
string content,
string projectShortName,
string version,
string documentLocalDirectory,
string languageCode)
{
return Regex.Replace(content, regexPattern, delegate (Match match)
{ {
var link = match.Groups[3].Value; var link = match.Groups[linkGroupIndex].Value;
var displayText = match.Groups[1].Value; var displayText = match.Groups[displayTextGroupIndex].Value;
var hashPart = ""; var hashPart = string.Empty;
var linkPart = link; var linkPart = link;
if (link.Contains("#")) if (link.Contains('#'))
{ {
var linkSplitted = link.Split("#"); var linkSplitted = link.Split('#');
linkPart = linkSplitted[0]; linkPart = linkSplitted[0];
hashPart = linkSplitted[1]; hashPart = linkSplitted[1];
} }
var documentName = RemoveFileExtension(linkPart); var documentName = RemoveFileExtension(linkPart);
var isFolder = !Path.HasExtension(linkPart); var isFolder = !linkPart.IsNullOrWhiteSpace() && !Path.HasExtension(linkPart);
var isMdFile = linkPart.EndsWith(".md"); var isMdFile = linkPart.EndsWith(".md");
@ -122,16 +140,11 @@ namespace Volo.Docs.Markdown
{ {
documentLocalDirectoryNormalized = "/" + documentLocalDirectoryNormalized; documentLocalDirectoryNormalized = "/" + documentLocalDirectoryNormalized;
} }
if (!string.IsNullOrEmpty(hashPart))
{
documentName += $"#{hashPart}";
}
return NormalizeLink( return NormalizeLink(
displayText, displayText,
MdLinkFormat, MdLinkFormat,
_docsLinkGenerator.GenerateLink(projectShortName, languageCode, $"{version}{documentLocalDirectoryNormalized}", documentName), _docsLinkGenerator.GenerateLink(projectShortName, languageCode, $"{version}{documentLocalDirectoryNormalized}", documentName) + (hashPart.IsNullOrWhiteSpace() ? string.Empty : "#" + hashPart),
projectShortName, projectShortName,
version, version,
documentName, documentName,
@ -139,33 +152,6 @@ namespace Volo.Docs.Markdown
); );
}); });
} }
private string NormalizeAnchorLinks(string projectShortName, string version, string documentLocalDirectory,
string languageCode, string normalized)
{
return Regex.Replace(normalized, AnchorLinkRegExp, delegate (Match match)
{
var link = match.Groups[1].Value;
var displayText = match.Groups[2].Value;
var documentName = RemoveFileExtension(link);
if (UrlHelper.IsExternalLink(link))
{
var documentLocalDirectoryNormalized = documentLocalDirectory.TrimStart('/').TrimEnd('/');
if (!string.IsNullOrWhiteSpace(documentLocalDirectoryNormalized))
{
documentLocalDirectoryNormalized = "/" + documentLocalDirectoryNormalized;
}
link = _docsLinkGenerator.GenerateLink(projectShortName, languageCode, $"{version}{documentLocalDirectoryNormalized}", documentName);
}
return NormalizeLink(displayText, MdLinkFormat, link,projectShortName,
version,
documentName,
languageCode);
});
}
private string NormalizeLink(string displayText, string linkFormat, string link, string projectName, string version, string documentName, string languageCode) private string NormalizeLink(string displayText, string linkFormat, string link, string projectName, string version, string documentName, string languageCode)
{ {

Loading…
Cancel
Save