private DocumentationDocumentType BuildDocumentationSubTree(DirectoryInfo directoryInfo, DirectoryInfo topDirectoryInfo, IDocumentationProject project) { DocumentationDocumentType subTreeDocumentType = DocumentationDocumentType.Folder; project.Path = directoryInfo.FullName; foreach (var file in directoryInfo.EnumerateFiles()) { var docType = DocumentationHelper.GetDocumentationDocumentTypeFromExtension(Path.GetExtension(file.FullName)); switch (docType) { case DocumentationDocumentType.Markdown: project.Documents.Add(new MarkdownDocument(_MarkdownPipeline) { Path = file.FullName, LastUpdate = file.LastWriteTimeUtc }); break; case DocumentationDocumentType.Pdf: project.Documents.Add(new PdfDocument { Path = file.FullName, LastUpdate = file.LastWriteTimeUtc }); break; case DocumentationDocumentType.Html: project.Documents.Add(new HtmlDocument { Path = file.FullName, LastUpdate = file.LastWriteTimeUtc }); break; case DocumentationDocumentType.Word: case DocumentationDocumentType.Folder: project.Documents.Add(new GenericDocumentationDocument { Path = file.FullName, DocumentType = docType, LastUpdate = file.LastWriteTimeUtc }); break; case DocumentationDocumentType.Project: subTreeDocumentType = DocumentationDocumentType.Project; break; case DocumentationDocumentType.Unknown: break; default: break; } } foreach (var directory in directoryInfo.EnumerateDirectories()) { IDocumentationProject subProject = new DocumentationProject(_Options, project.KeyPath); var subDocumentType = BuildDocumentationSubTree(directory, topDirectoryInfo, subProject); if (subDocumentType == DocumentationDocumentType.Project) { project.SubProjects.Add(subProject); } else { var documentationDirectory = new GenericDocumentationDocument { DocumentType = subDocumentType, Path = directory.FullName, LastUpdate = directory.LastWriteTimeUtc }; if (subProject.Documents.Any()) { documentationDirectory.SubDocuments = subProject.Documents.OrderBy(o => o.Name).ToArray(); project.Documents.Add(documentationDirectory); } } } return(subTreeDocumentType); }
private IDocumentationDocument CreateRemoteDocument <TDocumentationDocument>(RemoteDocumentationDocument remoteDocumentationDocument, IServiceProvider serviceProvider) where TDocumentationDocument : IDocumentationDocument, new() { if (remoteDocumentationDocument.SubDocumentsCount > 0) { var doc = new GenericDocumentationDocument { Path = remoteDocumentationDocument.Path, LastUpdate = remoteDocumentationDocument.LastUpdate, DocumentType = DocumentationDocumentType.Folder }; doc.SubDocuments = CopyDocuments <TDocumentationDocument>(remoteDocumentationDocument.SubDocuments, serviceProvider).ToArray(); return(doc); } var docType = DocumentationHelper.GetDocumentationDocumentTypeFromName(remoteDocumentationDocument.Path); switch (docType) { case DocumentationDocumentType.Markdown: using (var scope = serviceProvider.CreateScope()) { return(new RemoteMarkdownDocument(serviceProvider) { Path = remoteDocumentationDocument.Path, LastUpdate = remoteDocumentationDocument.LastUpdate }); } case DocumentationDocumentType.Pdf: return(new RemotePdfDocument { Path = remoteDocumentationDocument.Path, LastUpdate = remoteDocumentationDocument.LastUpdate }); case DocumentationDocumentType.Html: return(new RemoteHtmlDocument(serviceProvider) { Path = remoteDocumentationDocument.Path, LastUpdate = remoteDocumentationDocument.LastUpdate }); case DocumentationDocumentType.Word: return(new RemoteWordDocument(serviceProvider) { Path = remoteDocumentationDocument.Path, LastUpdate = remoteDocumentationDocument.LastUpdate }); case DocumentationDocumentType.Drawio: return(new RemoteDrawioDocument { Path = remoteDocumentationDocument.Path, LastUpdate = remoteDocumentationDocument.LastUpdate }); case DocumentationDocumentType.DrawioSvg: return(new RemoteDrawioSvgDocument { Path = remoteDocumentationDocument.Path, LastUpdate = remoteDocumentationDocument.LastUpdate }); case DocumentationDocumentType.Folder: default: return(new GenericDocumentationDocument { Path = remoteDocumentationDocument.Path, LastUpdate = remoteDocumentationDocument.LastUpdate, DocumentType = docType }); } }