Exemplo n.º 1
0
 protected override void Write(RoundtripRenderer renderer, LineBreakInline obj)
 {
     if (obj.IsHard && obj.IsBackslash)
     {
         renderer.Write("\\");
     }
     renderer.WriteLine(obj.NewLine);
 }
Exemplo n.º 2
0
 protected override void Write(RoundtripRenderer renderer, LiteralInline obj)
 {
     if (obj.IsFirstCharacterEscaped && obj.Content.Length > 0 && obj.Content[obj.Content.Start].IsAsciiPunctuation())
     {
         renderer.Write('\\');
     }
     renderer.Write(ref obj.Content);
 }
Exemplo n.º 3
0
        protected override void Write(RoundtripRenderer renderer, EmphasisInline obj)
        {
            var emphasisText = new string(obj.DelimiterChar, obj.DelimiterCount);

            renderer.Write(emphasisText);
            renderer.WriteChildren(obj);
            renderer.Write(emphasisText);
        }
Exemplo n.º 4
0
        protected override void Write(RoundtripRenderer renderer, LinkInline link)
        {
            if (link.IsImage)
            {
                renderer.Write('!');
            }
            // link text
            renderer.Write('[');
            renderer.WriteChildren(link);
            renderer.Write(']');

            if (link.Label != null)
            {
                if (link.LocalLabel == LocalLabel.Local || link.LocalLabel == LocalLabel.Empty)
                {
                    renderer.Write('[');
                    if (link.LocalLabel == LocalLabel.Local)
                    {
                        renderer.Write(link.LabelWithTrivia);
                    }
                    renderer.Write(']');
                }
            }
            else
            {
                if (link.Url != null)
                {
                    renderer.Write('(');
                    renderer.Write(link.TriviaBeforeUrl);
                    if (link.UrlHasPointyBrackets)
                    {
                        renderer.Write('<');
                    }
                    renderer.Write(link.UnescapedUrl);
                    if (link.UrlHasPointyBrackets)
                    {
                        renderer.Write('>');
                    }
                    renderer.Write(link.TriviaAfterUrl);

                    if (!string.IsNullOrEmpty(link.Title))
                    {
                        var open  = link.TitleEnclosingCharacter;
                        var close = link.TitleEnclosingCharacter;
                        if (link.TitleEnclosingCharacter == '(')
                        {
                            close = ')';
                        }
                        renderer.Write(open);
                        renderer.Write(link.UnescapedTitle);
                        renderer.Write(close);
                        renderer.Write(link.TriviaAfterTitle);
                    }

                    renderer.Write(')');
                }
            }
        }
Exemplo n.º 5
0
        protected override void Write(RoundtripRenderer renderer, CodeInline obj)
        {
            var delimiterRun = new string(obj.Delimiter, obj.DelimiterCount);

            renderer.Write(delimiterRun);
            if (!obj.ContentSpan.IsEmpty)
            {
                renderer.Write(obj.ContentWithTrivia);
            }
            renderer.Write(delimiterRun);
        }
Exemplo n.º 6
0
        // this method is copied intentionally to ensure all other tests
        // do not unintentionally use the expected parameter
        private static void RoundTrip(string markdown, string expected)
        {
            var pipelineBuilder = new MarkdownPipelineBuilder();

            pipelineBuilder.EnableTrackTrivia();
            MarkdownPipeline pipeline         = pipelineBuilder.Build();
            MarkdownDocument markdownDocument = Markdown.Parse(markdown, pipeline);
            var sw = new StringWriter();
            var rr = new RoundtripRenderer(sw);

            rr.Write(markdownDocument);

            Assert.AreEqual(expected, sw.ToString());
        }
Exemplo n.º 7
0
        internal static void RoundTrip(string markdown)
        {
            var pipelineBuilder = new MarkdownPipelineBuilder();

            pipelineBuilder.EnableTrackTrivia();
            MarkdownPipeline pipeline         = pipelineBuilder.Build();
            MarkdownDocument markdownDocument = Markdown.Parse(markdown, pipeline);
            var sw = new StringWriter();
            var nr = new RoundtripRenderer(sw);

            nr.Write(markdownDocument);

            var result = sw.ToString();

            Assert.AreEqual(markdown, result);
        }
Exemplo n.º 8
0
        internal static void RoundTrip(string markdown, string context = null)
        {
            var pipelineBuilder = new MarkdownPipelineBuilder();

            pipelineBuilder.EnableTrackTrivia();
            MarkdownPipeline pipeline         = pipelineBuilder.Build();
            MarkdownDocument markdownDocument = Markdown.Parse(markdown, pipeline);
            var sw = new StringWriter();
            var nr = new RoundtripRenderer(sw);

            nr.Write(markdownDocument);

            var result = sw.ToString();

            TestParser.PrintAssertExpected("", result, markdown, context);
        }
Exemplo n.º 9
0
        public void Test()
        {
            var markdown = $@"
# Test document
This document contains an unordered list. It uses tabs to indent. This test demonstrates
a method of making the input markdown uniform without altering any other markdown in the
resulting output file.

- item1

>look, ma:
> my space is not normalized!
";
            MarkdownDocument markdownDocument = Markdown.Parse(markdown, trackTrivia: true);
            var listBlock       = markdownDocument[2] as ListBlock;
            var listItem        = listBlock[0] as ListItemBlock;
            var paragraph       = listItem[0] as ParagraphBlock;
            var containerInline = new ContainerInline();

            containerInline.AppendChild(new LiteralInline(" my own text!"));
            containerInline.AppendChild(new LineBreakInline {
                NewLine = NewLine.CarriageReturnLineFeed
            });
            paragraph.Inline = containerInline;

            var sw = new StringWriter();
            var rr = new RoundtripRenderer(sw);

            rr.Write(markdownDocument);
            var outputMarkdown = sw.ToString();
            var expected       = $@"
# Test document
This document contains an unordered list. It uses tabs to indent. This test demonstrates
a method of making the input markdown uniform without altering any other markdown in the
resulting output file.

- my own text!

>look, ma:
> my space is not normalized!
";

            expected       = expected.Replace("\r\n", "\n").Replace("\r", "\n");
            outputMarkdown = outputMarkdown.Replace("\r\n", "\n").Replace("\r", "\n");

            Assert.AreEqual(expected, outputMarkdown);
        }
Exemplo n.º 10
0
        protected override void Write(RoundtripRenderer renderer, CodeInline obj)
        {
            var delimiterRun = new string(obj.Delimiter, obj.DelimiterCount);

            renderer.Write(delimiterRun);
            if (obj.Content is { Length : > 0 })
Exemplo n.º 11
0
 protected override void Write(RoundtripRenderer renderer, HtmlEntityInline obj)
 {
     renderer.Write(obj.Original);
 }
Exemplo n.º 12
0
 protected override void Write(RoundtripRenderer renderer, HtmlInline obj)
 {
     renderer.Write(obj.Tag);
 }
Exemplo n.º 13
0
 protected override void Write(RoundtripRenderer renderer, AutolinkInline obj)
 {
     renderer.Write('<').Write(obj.Url).Write('>');
 }
Exemplo n.º 14
0
 protected override void Write(RoundtripRenderer renderer, DelimiterInline obj)
 {
     renderer.Write(obj.ToLiteral());
     renderer.WriteChildren(obj);
 }