diff --git a/Helpers/HelperMarkdown.cs b/Helpers/HelperMarkdown.cs index 3ce04e8..d18a4b1 100644 --- a/Helpers/HelperMarkdown.cs +++ b/Helpers/HelperMarkdown.cs @@ -334,14 +334,41 @@ internal static partial class HelperMarkdown { Dictionary> results = new(); List? markdownFiles; + string fileNameWithoutExtension; foreach ((MarkdownFile markdownFile, _) in collection) { + fileNameWithoutExtension = markdownFile.FileNameWithoutExtension.ToLower(); if (!results.TryGetValue(markdownFile.FileNameWithoutExtension, out markdownFiles)) { results.Add(markdownFile.FileNameWithoutExtension, new()); if (!results.TryGetValue(markdownFile.FileNameWithoutExtension, out markdownFiles)) throw new NotSupportedException(); } + if (markdownFiles.Contains(markdownFile)) + continue; + markdownFiles.Add(markdownFile); + if (fileNameWithoutExtension == markdownFile.FileNameWithoutExtension) + continue; + if (!results.TryGetValue(fileNameWithoutExtension, out markdownFiles)) + { + results.Add(fileNameWithoutExtension, new()); + if (!results.TryGetValue(fileNameWithoutExtension, out markdownFiles)) + throw new NotSupportedException(); + } + if (markdownFiles.Contains(markdownFile)) + continue; + markdownFiles.Add(markdownFile); + } + foreach ((MarkdownFile markdownFile, _) in collection) + { + if (!results.TryGetValue(markdownFile.H1, out markdownFiles)) + { + results.Add(markdownFile.H1, new()); + if (!results.TryGetValue(markdownFile.H1, out markdownFiles)) + throw new NotSupportedException(); + } + if (markdownFiles.Contains(markdownFile)) + continue; markdownFiles.Add(markdownFile); } return results; @@ -526,7 +553,7 @@ internal static partial class HelperMarkdown results.Add((Path.GetRelativePath(markdownFile.Directory, Path.GetFullPath(item.MarkdownFile.File)), item.MarkdownFile.H1)); } if (results.Count == 1) - (relativePath, title) = (results.First().RelativePath, results.First().Title); + (relativePath, title) = (results.First().RelativePath.Replace(" ", "%20"), results.First().Title); else { results.Clear(); @@ -538,7 +565,7 @@ internal static partial class HelperMarkdown results.Add((Path.GetRelativePath(markdownFile.Directory, Path.GetFullPath(item.MarkdownFile.File)), item.MarkdownFile.H1)); } if (results.Count == 1) - (relativePath, title) = (results.First().RelativePath, results.First().Title); + (relativePath, title) = (results.First().RelativePath.Replace(" ", "%20"), results.First().Title); else { results.Clear(); @@ -550,9 +577,22 @@ internal static partial class HelperMarkdown results.Add((Path.GetRelativePath(markdownFile.Directory, Path.GetFullPath(item.MarkdownFile.File)), item.MarkdownFile.H1)); } if (results.Count == 1) - (relativePath, title) = (results.First().RelativePath, results.First().Title); + (relativePath, title) = (results.First().RelativePath.Replace(" ", "%20"), results.First().Title); else - (relativePath, title) = (null, null); + { + results.Clear(); + string spaceNaming = fileFullPath.Replace(" ", "%20"); + foreach ((MarkdownFile MarkdownFile, string[] Lines) item in collection) + { + if (Path.GetFullPath(item.MarkdownFile.File).ToLower().Replace(" ", "%20") != spaceNaming) + continue; + results.Add((Path.GetRelativePath(markdownFile.Directory, Path.GetFullPath(item.MarkdownFile.File)), item.MarkdownFile.H1)); + } + if (results.Count == 1) + (relativePath, title) = (results.First().RelativePath.Replace(" ", "%20"), results.First().Title); + else + (relativePath, title) = (null, null); + } } } return (relativePath, title);