public SiteGenerator(ContentGenerator generator, IFilesystemRepository filesystemRepository, DocumentParser parser, MarkDownMutator mutator) { this.generator = generator; this.filesystemRepository = filesystemRepository; this.parser = parser; this.mutator = mutator; }
static string MutateCategoryTags(string fileContent, string baseUrl, ContentGenerator contentGenerator) { var content = DocumentParserCore.CategoryEx.Replace( fileContent, x => { Tag[] parsedTags = DocumentParserCore.GetTheTags(x.Groups["tags"].Value); var sb = new StringBuilder(); foreach (var tag in parsedTags) { sb.Append(contentGenerator.CreateCategoryLink(tag, baseUrl)); sb.Append(Environment.NewLine); } return(sb.ToString()); }); return(content); }
internal static IEnumerable <DocumentInfo> MutateFile(ReadWritePaths rootFilePath, TagCollection tags, string baseUrl, string editBaseUrl, List <FileInfo> files, ContentGenerator contentGenerator) { var top4files = GetTop4NewestFiles(rootFilePath, files); int articleCount = tags.SelectMany(x => x.Value).Distinct().Count(); foreach (var path in files) { var fileContent = File.ReadAllText(path.FullName, new UTF8Encoding(true)); if (DocumentParserCore.IsDraftFile(fileContent)) { continue; } var relativePath = path.FullName.Substring(rootFilePath.ReadPath.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 = DocumentParserCore.ParsePageTitle(fileContent); yield return (new DocumentInfo() { Content = fileContent, Path = Path.Combine(rootFilePath.WritePath, relativePath), Title = title }); } }
public MarkDownMutator(IFilesystemRepository filesystemRepository, ContentGenerator contentGenerator) { this.filesystemRepository = filesystemRepository; this.contentGenerator = contentGenerator; }
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.CreateCategoryLink(x, baseUrl)))); return(content); }