protected override void Write(RoundtripRenderer renderer, LineBreakInline obj) { if (obj.IsHard && obj.IsBackslash) { renderer.Write("\\"); } renderer.WriteLine(obj.NewLine); }
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); }
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); }
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(')'); } } }
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); }
// 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()); }
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); }
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); }
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); }
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 })
protected override void Write(RoundtripRenderer renderer, HtmlEntityInline obj) { renderer.Write(obj.Original); }
protected override void Write(RoundtripRenderer renderer, HtmlInline obj) { renderer.Write(obj.Tag); }
protected override void Write(RoundtripRenderer renderer, AutolinkInline obj) { renderer.Write('<').Write(obj.Url).Write('>'); }
protected override void Write(RoundtripRenderer renderer, DelimiterInline obj) { renderer.Write(obj.ToLiteral()); renderer.WriteChildren(obj); }