in src/Elastic.Markdown/IO/DocumentationSet.cs [326:362]
public async Task ResolveDirectoryTree(Cancel ctx) =>
await Tree.Resolve(ctx);
private DocumentationFile CreateMarkDownFile(IFileInfo file, BuildContext context)
{
var relativePath = Path.GetRelativePath(SourceDirectory.FullName, file.FullName);
if (Configuration.Exclude.Any(g => g.IsMatch(relativePath)))
return new ExcludedFile(file, SourceDirectory, context.Git.RepositoryName);
if (relativePath.Contains("_snippets"))
return new SnippetFile(file, SourceDirectory, context.Git.RepositoryName);
// we ignore files in folders that start with an underscore
var folder = Path.GetDirectoryName(relativePath);
if (folder is not null && (folder.Contains($"{Path.DirectorySeparatorChar}_", StringComparison.Ordinal) || folder.StartsWith('_')))
return new ExcludedFile(file, SourceDirectory, context.Git.RepositoryName);
if (Configuration.Files.Contains(relativePath))
return ExtensionOrDefaultMarkdown();
if (Configuration.Globs.Any(g => g.IsMatch(relativePath)))
return ExtensionOrDefaultMarkdown();
context.EmitError(Configuration.SourceFile, $"Not linked in toc: {relativePath}");
return new ExcludedFile(file, SourceDirectory, context.Git.RepositoryName);
MarkdownFile ExtensionOrDefaultMarkdown()
{
foreach (var extension in EnabledExtensions)
{
var documentationFile = extension.CreateMarkdownFile(file, SourceDirectory, this);
if (documentationFile is not null)
return documentationFile;
}
return new MarkdownFile(file, SourceDirectory, MarkdownParser, context, this);
}
}