public ReadMdAndWriteHtml(IFilesystemRepository filesystemRepository, ContentGenerator contentGenerator, MarkdownToHtml markdownToHtml, ExpandTagsToMarkdown expandTagsToMarkdown) { this.filesystemRepository = filesystemRepository; this.contentGenerator = contentGenerator; this.markdownToHtml = markdownToHtml; this.expandTagsToMarkdown = expandTagsToMarkdown; }
public SiteGenerator(ContentGenerator generator, IFilesystemRepository filesystemRepository, TagsExtractor tagsExtractor, ReadMdAndWriteHtml readMdAndWriteHtml, MarkdownToHtml markdownToHtml) { this.generator = generator; this.filesystemRepository = filesystemRepository; this.tagsExtractor = tagsExtractor; this.readMdAndWriteHtml = readMdAndWriteHtml; this.markdownToHtml = markdownToHtml; }
static string MutateCategoryTags(string fileContent, string baseUrl, ContentGenerator contentGenerator) { var content = TagsExtractor.CategoryEx.Replace( fileContent, x => { var parsedTags = TagsExtractor.ExtractTags(x.Groups["tags"].Value); var links = parsedTags.Select(tag => contentGenerator.GenerateCategoryLink(tag, baseUrl)); return(string.Join("\r\n", links) + "\r\n"); }); return(content); }
public IEnumerable <DocumentInfo> Execute( Configuration rootFilePath, TagCollection tags, string baseUrl, string editBaseUrl, List <FileInfo> files, ContentGenerator contentGenerator) { var top4Files = GetTop4NewestFiles(rootFilePath, files); var articleCount = tags.SelectMany(x => x.Value).Distinct().Count(); foreach (var path in files) { var fileContent = filesystemRepository.ReadAllText(path.FullName); if (DocumentParser.IsDraftFile(fileContent)) { continue; } var relativePath = path.FullName.Substring(rootFilePath.ReadBasePath.Length).Replace('\\', '/'); var editUrl = editBaseUrl + relativePath; fileContent = MutateTopXArticles(fileContent, top4Files, baseUrl); fileContent = MutateArticleHeaderUrlsTag(fileContent); fileContent = MutateSocialLinks(fileContent, baseUrl, relativePath); fileContent = MutateCommentText(fileContent, editUrl); fileContent = MutateCategoryTags(fileContent, baseUrl, contentGenerator); fileContent = MutateAllTagsLine(fileContent, tags, baseUrl, contentGenerator); fileContent = MutateBaseUrlTag(fileContent, baseUrl); fileContent = MutateGithubPageUrlTag(fileContent, editUrl); fileContent = MutateTagArticleCount(fileContent, articleCount); var title = DocumentParser.GetParsePageTitle(fileContent); yield return (new DocumentInfo { Content = fileContent, Path = Path.Combine(rootFilePath.WritePath, relativePath), Title = title }); } }
static string MutateAllTagsLine(string fileContent, TagCollection tags, string baseUrl, ContentGenerator contentGenerator) { var content = AllTagsEx.Replace( fileContent, z => string.Join(" ", tags .Select(x => x.Key) .OrderBy(x => x.Value) .Select(x => contentGenerator.GenerateCategoryLink(x, baseUrl)))); return(content); }