Esempio n. 1
0
        public void Parse(string sourceFile)
        {
            var markdown = File.ReadAllText($"TestFiles\\Inputs\\{sourceFile}.md");

            var result = _parser.Parse(markdown);

            var resultJson = JsonConvert.SerializeObject(result,
                                                         Formatting.Indented,
                                                         new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore
            });

            var expectedJson = File.ReadAllText($"TestFiles\\Outputs\\{sourceFile}.json");

            Assert.That(resultJson, Is.EqualTo(expectedJson));
        }
        private static async Task <PageTreeItem <PageNode> > LoadPages(string rootDirectory)
        {
            return(await Statik.Statik.GetPageDirectoryLoader()
                   .LoadFiles(
                       new PhysicalFileProvider(rootDirectory),
                       new PageDirectoryLoaderOptions
            {
                IndexPageMatcher = new Matcher(StringComparison.Ordinal).AddInclude("index.md"),
                NormalPageMatcher = new Matcher(StringComparison.Ordinal).AddInclude("*.md")
            })
                   .Convert(async x =>
            {
                if (x.Data == null || x.Data.IsDirectory)
                {
                    return null;
                }

                Services.MarkdownParseResult markdown;
                using (var stream = x.Data.CreateReadStream())
                    using (var reader = new StreamReader(stream))
                    {
                        markdown = Parser.Parse(await reader.ReadToEndAsync());
                    }

                if (markdown.Yaml == null)
                {
                    throw new Exception($"Front matter is required for {x.Data.PhysicalPath}");
                }

                var pageNode = new PageNode();
                pageNode.Title = markdown.Yaml.title;
                if (string.IsNullOrEmpty(pageNode.Title))
                {
                    throw new Exception($"\"Title\" required for {x.Data.PhysicalPath}");
                }
                var order = (int?)markdown.Yaml.order;
                if (order.HasValue)
                {
                    pageNode.Order = order.Value;
                }
                pageNode.Markdown = markdown.Markdown;

                return pageNode;
            }));
        }
Esempio n. 3
0
        public void ConvertMarkdownToExcel(
            [Option("i", "input markdown file path.")] string markdownFilePath,
            [Option("o", "output Excel file path.")] string excelFilePath
            )
        {
            var markdown = _markdownReader.ReadToEnd(markdownFilePath);
            var usdm     = _markdownParser.Parse(markdown);
            var book     = _excelDecoder.Decode(usdm);

            _excelWriter.Write(book, excelFilePath);
        }
        public IPost GetPost(string content)
        {
            if (content is null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            var postMetadata = GetPostMetadata(content);
            var html         = _markdownParser.Parse(content);

            var post = new Post(postMetadata, html);

            return(post);
        }