CDE
Use of LinkTarget
This commit is contained in:
2024-11-01 17:08:04 -07:00
parent e26c4ccf31
commit f0ebc5b574
10 changed files with 1373 additions and 23666 deletions

View File

@ -159,12 +159,8 @@ internal static partial class HelperMarkdown
return results;
}
private static string[] GetFiles(AppSettings appSettings, string directory, SearchOption searchOption)
{
string[] results = Directory.GetFiles(directory, "*.md", searchOption).
Where(l => !appSettings.ExcludeDirectoryNames.Any(m => l.Contains(m))).ToArray();
return results;
}
private static FileInfo[] GetFiles(AppSettings appSettings, DirectoryInfo directoryInfo, SearchOption searchOption) =>
directoryInfo.GetFiles("*.md", searchOption).Where(l => !appSettings.ExcludeDirectoryNames.Any(m => l.FullName.Contains(m))).ToArray();
/// <summary>
/// Determines files text file's encoding by analyzing its byte order mark (BOM).
@ -293,16 +289,19 @@ internal static partial class HelperMarkdown
return results;
}
private static ReadOnlyCollection<string> GetFiles(AppSettings appSettings, Input input)
private static ReadOnlyCollection<FileInfo> GetFiles(AppSettings appSettings, Input input)
{
List<string> results = [];
List<string> files = [];
string[] directories = Directory.GetDirectories(input.Source, "*", SearchOption.AllDirectories);
foreach (string directory in directories)
List<FileInfo> results = [];
List<FileInfo> collection = [];
DirectoryInfo sourceDirectoryInfo = new(input.Source);
DirectoryInfo[] directories = sourceDirectoryInfo.GetDirectories("*", SearchOption.AllDirectories);
foreach (DirectoryInfo directoryInfo in directories)
{
files.Clear();
files.AddRange(GetFiles(appSettings, directory, SearchOption.TopDirectoryOnly));
foreach (string file in files)
collection.Clear();
if (!directoryInfo.Exists || (!string.IsNullOrEmpty(directoryInfo.LinkTarget) && !Directory.Exists(directoryInfo.LinkTarget)))
continue;
collection.AddRange(GetFiles(appSettings, directoryInfo, SearchOption.TopDirectoryOnly));
foreach (FileInfo file in collection)
results.Add(file);
}
return new(results);
@ -660,7 +659,6 @@ internal static partial class HelperMarkdown
string h1;
string key;
string type;
FileInfo fileInfo;
bool isKanbanIndex;
List<string> lines;
bool isWithinSource;
@ -670,15 +668,14 @@ internal static partial class HelperMarkdown
string fileNameWithoutExtension;
ReadOnlyDictionary<string, object> frontMatterYaml;
bool isGitOthersModifiedAndDeletedExcludingStandard;
ReadOnlyCollection<string> files = GetFiles(appSettings, input);
foreach (string file in files)
ReadOnlyCollection<FileInfo> files = GetFiles(appSettings, input);
foreach (FileInfo fileInfo in files)
{ // cSpell:disable
fileInfo = new(file);
if (fileInfo.DirectoryName is null)
continue;
key = Path.GetRelativePath(input.Source, file);
isWithinSource = file.Contains(input.Source);
isGitOthersModifiedAndDeletedExcludingStandard = gitOthersModifiedAndDeletedExcludingStandardFiles.Contains(file);
key = Path.GetRelativePath(input.Source, fileInfo.FullName);
isWithinSource = fileInfo.FullName.Contains(input.Source);
isGitOthersModifiedAndDeletedExcludingStandard = gitOthersModifiedAndDeletedExcludingStandardFiles.Contains(fileInfo.FullName);
if (!isWithinSource && results.ContainsKey(key))
continue;
(lines, lineNumber) = GetStatusAndFrontMatterYamlEndLineNumbers(fileInfo);
@ -692,15 +689,15 @@ internal static partial class HelperMarkdown
if (!isGitOthersModifiedAndDeletedExcludingStandard)
continue;
type = appSettings.DefaultNoteType;
File.WriteAllLines(file, ["---", $"type: {type}\"", "---", string.Empty, $"# {h1}"]);
lines = File.ReadAllLines(file).ToList();
File.WriteAllLines(fileInfo.FullName, ["---", $"type: {type}\"", "---", string.Empty, $"# {h1}"]);
lines = File.ReadAllLines(fileInfo.FullName).ToList();
}
isKanbanMarkdown = fileInfo.Name.EndsWith(".knb.md");
isKanbanIndex = fileNameWithoutExtension == "index" && type.StartsWith("kanb", StringComparison.OrdinalIgnoreCase);
markdownFile = new(fileInfo.CreationTime,
fileInfo.DirectoryName,
fileInfo.Extension,
file,
fileInfo.FullName,
fileInfo.Name,
fileNameWithoutExtension,
frontMatterYaml,