public string GetContent(DocumentVersionModel documentVersion, string filename) { var content = string.Empty; var combinedPath = Path.Combine(documentVersion.Path, filename); if (File.Exists(combinedPath)) { content = File.ReadAllText(combinedPath); } content = content.KeepAfter("<body>").KeepUntil("</body>"); var imgRegex = new Regex("(?<=<img.*?src=[\"'])[^\"']*", RegexOptions.IgnoreCase); content = imgRegex.Replace(content, m => { if (m.Value.StartsWith("http", StringComparison.OrdinalIgnoreCase)) { return(m.Value); } return(documentVersion.StaticBase + m.Value); }); content = content.Replace("<table>", "<table class=\"table table-bordered\">"); content = content.Replace("{{version}}", documentVersion.Version.Substring(1)); // version without "v" content = content.Replace("{{docversion}}", documentVersion.Version); return(content); }
public void ScanDocuments() { var docList = new List <DocumentModel>(); foreach (var typeFolder in Directory.EnumerateDirectories(documentsRootFolder)) { var document = new DocumentModel(); document.Product = Path.GetFileName(typeFolder); document.Title = _siteConfig.Products[document.Product]; var versionDirectories = Directory.EnumerateDirectories(typeFolder) .Where(directory => !directory.EndsWith("-sprint", StringComparison.OrdinalIgnoreCase)); foreach (var versionDirectory in versionDirectories) { var dir = versionDirectory.Replace(_webRootPath, string.Empty).Replace('\\', '/').TrimEnd('/') + "/"; var documentVersionModel = new DocumentVersionModel() { Path = versionDirectory, ContentFilenames = Directory.EnumerateFiles(versionDirectory, "*.html", SearchOption.AllDirectories).Select(Path.GetFileName).ToList(), Version = Path.GetFileName(versionDirectory), StaticBase = $"{_cdnUrl}{dir}" }; documentVersionModel.StartFilename = documentVersionModel .ContentFilenames .Select(filename => new { Filename = filename, Rank = IsDefaultDoc(filename) ? 1 : 0 }) .OrderByDescending(o => o.Rank) .Select(s => s.Filename) .FirstOrDefault(); documentVersionModel.TocFilename = documentVersionModel .ContentFilenames.Where(file => string.CompareOrdinal(file, "toc.html") == 0) .FirstOrDefault(); document.DocumentVersions.Add(documentVersionModel); } document.Versions = document.DocumentVersions .Select(s => s.Version) .OrderByDescending(o => o, new AlphanumComparator()) .ToList(); docList.Add(document); } Documents.Clear(); Documents.AddRange(docList); }
public string ValidateFilename(DocumentVersionModel documentVersion, string file) { var filename = documentVersion.StartFilename; if (!string.IsNullOrEmpty(file)) { var selectedFilename = documentVersion.ContentFilenames .FirstOrDefault(contentFilename => string.CompareOrdinal(file, Path.GetFileNameWithoutExtension(contentFilename)) == 0); if (!string.IsNullOrEmpty(selectedFilename)) { filename = selectedFilename; } } return(filename); }