Ejemplo n.º 1
0
 public SiteGenerator(ContentGenerator generator, IFilesystemRepository filesystemRepository, DocumentParser parser, MarkDownMutator mutator)
 {
     this.generator            = generator;
     this.filesystemRepository = filesystemRepository;
     this.parser  = parser;
     this.mutator = mutator;
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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
                });
            }
        }
Ejemplo n.º 4
0
 public MarkDownMutator(IFilesystemRepository filesystemRepository, ContentGenerator contentGenerator)
 {
     this.filesystemRepository = filesystemRepository;
     this.contentGenerator     = contentGenerator;
 }
Ejemplo n.º 5
0
        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);
        }