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
            });
        }
Esempio n. 2
0
        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));
                }
            }
        }