Ejemplo n.º 1
0
        public TagCollection Execute(Configuration configuration)
        {
            var tags = filesystemRepository.EnumerateFiles(configuration.ArticlesPath, "*.md")
                       .Select(path => new
            {
                relativePath = path.FullName.Substring(configuration.ReadBasePath.Length),
                fileContent  = filesystemRepository.ReadAllText(path.FullName)
            })
                       .Where(x => !DocumentParser.IsDraftFile(x.fileContent))
                       .Select(x => ParsePage(x.fileContent, x.relativePath));

            return(new TagCollection(tags));
        }
Ejemplo n.º 2
0
        static List <Tuple <FileInfo, string, string> > GetTop4NewestFiles(Configuration rootFilePath, List <FileInfo> files)
        {
            var startIndex = rootFilePath.ReadBasePath.Length;

            return(files
                   .Where(x => x.FullName.StartsWith(Path.Combine(rootFilePath.ReadBasePath, "Articles")))
                   .OrderByDescending(x => x.LastWriteTime)
                   .Select(x => new { File = x, Content = File.ReadAllText(x.FullName) })
                   .Where(x => !DocumentParser.IsDraftFile(x.Content))
                   .Take(4)
                   .Select(x =>
                           Tuple.Create(
                               x.File,
                               x.File.FullName.Substring(startIndex, x.File.FullName.Length - startIndex - 2) + "html",
                               x.Content))
                   .ToList());
        }
Ejemplo n.º 3
0
        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
                });
            }
        }