public TocFolderCompilationResult Compile(DirectoryInfo directoryInfo, CompilationUtils.Context context) { var documentationVersion = directoryInfo.Name; var compiledTocs = GenerateTableOfContents(documentationVersion, context).ToList(); return(new TocFolderCompilationResult { CompiledTocs = compiledTocs, SourceDirectoryVersion = documentationVersion }); }
private IEnumerable <TableOfContents> GenerateTableOfContents() { var compilationContext = new CompilationUtils.Context(); var documentationDirectories = Directory.GetDirectories(Options.PathToDocumentationDirectory); var compiledTocs = documentationDirectories .Select(documentationDirectory => new DirectoryInfo(documentationDirectory)) .Select(directory => _tableOfContentsCompiler.Compile(directory, compilationContext)) .ToList(); var mergedTocs = TableOfContentsMerger.Merge(compiledTocs); return(mergedTocs); }
private IEnumerable <CompilationResult> GenerateTableOfContentItems(string directory, string keyPrefix, string documentationVersion, CompilationUtils.Context context) { var docsFilePath = Path.Combine(directory, Constants.DocumentationFileName); if (File.Exists(docsFilePath) == false) { yield break; } foreach (var item in DocumentationFileHelper.ParseFile(docsFilePath)) { Validate(item, docsFilePath); var tableOfContentsItem = new CompilationResult { Key = keyPrefix + "/" + item.Name, Title = item.Description, IsFolder = item.IsFolder }; if (item.IsFolder) { var compilationResults = GenerateTableOfContentItems(Path.Combine(directory, item.Name), tableOfContentsItem.Key, documentationVersion, context).ToList(); tableOfContentsItem.Items = compilationResults; var supportedVersions = compilationResults.SelectMany(x => x.SupportedVersions); tableOfContentsItem.AddSupportedVersions(supportedVersions); } else { tableOfContentsItem.Languages = GetLanguagesForTableOfContentsItem(directory, item.Name).ToList(); if (MarkdownFileExists(directory, item)) { var supportedVersions = _versions.GetMinorVersionsInRange(documentationVersion, item.LastSupportedVersion); tableOfContentsItem.AddSupportedVersions(supportedVersions); tableOfContentsItem.SourceVersion = documentationVersion; } context.RegisterCompilation(new CompilationUtils.Context.RegistrationInput { Key = tableOfContentsItem.Key, Language = item.Language, DocumentationVersion = documentationVersion, LastSupportedVersion = item.LastSupportedVersion, SupportedVersions = tableOfContentsItem.SupportedVersions?.ToList() }); } yield return(tableOfContentsItem); } }
private IEnumerable <TableOfContents> GenerateTableOfContents(string documentationVersion, CompilationUtils.Context context) { var directory = _options.GetPathToDocumentationPagesDirectory(documentationVersion); Debug.Assert(Directory.Exists(directory)); var docsFilePath = Path.Combine(directory, Constants.DocumentationFileName); if (File.Exists(docsFilePath) == false) { yield break; } foreach (var item in DocumentationFileHelper.ParseFile(docsFilePath)) { if (!item.IsFolder) { continue; } var category = CategoryHelper.ExtractCategoryFromPath(item.Name); var compilationResults = GenerateTableOfContentItems(Path.Combine(directory, item.Name), item.Name, documentationVersion, context).ToList(); yield return(_converter.ConvertToTableOfContents(compilationResults, documentationVersion, category)); var additionalSupportedVersions = GetAdditionalSupportedVersions(documentationVersion, compilationResults); foreach (var supportedVersion in additionalSupportedVersions) { yield return(GetAdditionalSupportedTableOfContent(supportedVersion, category, compilationResults)); } } }