Add ToHtml helper accepting a TextWriter

This commit is contained in:
Miha Zupan
2022-04-08 00:02:24 +02:00
parent 76e25833ad
commit ee732e5a42
2 changed files with 51 additions and 0 deletions

View File

@@ -74,6 +74,35 @@ namespace Markdig.Tests
}
}
[Test]
public void TestDocumentToHtmlWithWriter()
{
var writer = new StringWriter();
for (int i = 0; i < 5; i++)
{
MarkdownDocument document = Markdown.Parse("This is a text with some *emphasis*");
document.ToHtml(writer);
string html = writer.ToString();
Assert.AreEqual("<p>This is a text with some <em>emphasis</em></p>\n", html);
writer.GetStringBuilder().Length = 0;
}
writer = new StringWriter();
var pipeline = new MarkdownPipelineBuilder()
.UseAdvancedExtensions()
.Build();
for (int i = 0; i < 5; i++)
{
MarkdownDocument document = Markdown.Parse("This is a text with a https://link.tld/", pipeline);
document.ToHtml(writer, pipeline);
string html = writer.ToString();
Assert.AreEqual("<p>This is a text with a <a href=\"https://link.tld/\">https://link.tld/</a></p>\n", html);
writer.GetStringBuilder().Length = 0;
}
}
[Test]
public void TestConvert()
{

View File

@@ -132,6 +132,28 @@ namespace Markdig
return renderer.Writer.ToString() ?? string.Empty;
}
/// <summary>
/// Converts a Markdown document to HTML.
/// </summary>
/// <param name="document">A Markdown document.</param>
/// <param name="writer">The destination <see cref="TextWriter"/> that will receive the result of the conversion.</param>
/// <param name="pipeline">The pipeline used for the conversion.</param>
/// <returns>The result of the conversion</returns>
/// <exception cref="ArgumentNullException">if markdown document variable is null</exception>
public static void ToHtml(this MarkdownDocument document, TextWriter writer, MarkdownPipeline? pipeline = null)
{
if (document is null) ThrowHelper.ArgumentNullException(nameof(document));
if (writer is null) ThrowHelper.ArgumentNullException_writer();
pipeline ??= DefaultPipeline;
using var rentedRenderer = pipeline.RentHtmlRenderer(writer);
HtmlRenderer renderer = rentedRenderer.Instance;
renderer.Render(document);
renderer.Writer.Flush();
}
/// <summary>
/// Converts a Markdown string to HTML and output to the specified writer.
/// </summary>