Simplify Markdown top-level api

This commit is contained in:
Alexandre Mutel
2016-02-29 23:59:45 +09:00
parent bc0e0301c4
commit 87eaeeff9e
6 changed files with 32 additions and 29 deletions

View File

@@ -28,11 +28,11 @@ namespace Testamina.Markdig.Benchmarks
public void TestMarkdig()
{
//var reader = new StreamReader(File.Open("spec.md", FileMode.Open));
Markdown.ConvertToHtml(text);
Markdown.Convert(text);
//File.WriteAllText("spec.html", writer.ToString());
}
[Benchmark]
//[Benchmark]
public void TestCommonMark()
{
////var reader = new StreamReader(File.Open("spec.md", FileMode.Open));
@@ -73,7 +73,7 @@ namespace Testamina.Markdig.Benchmarks
{
var clock = Stopwatch.StartNew();
var program = new Program();
for (int i = 0; i < 500; i++)
for (int i = 0; i < 1000; i++)
{
if (markdig)
{

View File

@@ -28,7 +28,7 @@ namespace Textamina.Markdig.Tests
// var reader = new StringReader(@"> > toto tata
//> titi toto
//");
var result = Markdown.ConvertToHtml(reader);
var result = Markdown.Convert(reader);
Console.WriteLine(result);
}
@@ -38,7 +38,7 @@ namespace Textamina.Markdig.Tests
MarkdownParser.Log = Console.Out;
var reader = new StringReader(inputText);
var output = new StringWriter();
Markdown.ConvertToHtml(reader, output);
Markdown.Convert(reader, output);
var result = Compact(output.ToString());
expectedOutputText = Compact(expectedOutputText);

View File

@@ -22,7 +22,7 @@ namespace Textamina.Markdig.Tests
//> titi toto
//");
var result = Markdown.ConvertToHtml(reader);
var result = Markdown.Convert(reader);
Console.WriteLine(result);
}
}

View File

@@ -8,34 +8,40 @@ namespace Textamina.Markdig
{
public class Markdown
{
public static string ConvertToHtml(string markdown)
public static string Convert(string markdown)
{
if (markdown == null) throw new ArgumentNullException(nameof(markdown));
var reader = new StringReader(markdown);
var writer = new StringWriter();
ConvertToHtml(reader, writer);
return writer.ToString();
return Convert(reader)?.ToString() ?? string.Empty;
}
public static string ConvertToHtml(StringReader reader)
public static object Convert(TextReader reader, MarkdownPipeline pipeline = null)
{
if (reader == null) throw new ArgumentNullException(nameof(reader));
var writer = new StringWriter();
ConvertToHtml(reader, writer);
return writer.ToString();
pipeline = pipeline ?? new MarkdownPipeline();
if (pipeline.Renderer == null)
{
pipeline.Renderer = new HtmlMarkdownRenderer(new StringWriter());
}
var document = Parse(reader, pipeline);
return pipeline.Renderer.WriteDocument(document);
}
public static void ConvertToHtml(TextReader reader, TextWriter writer, MarkdownPipeline pipeline = null)
public static void Convert(TextReader reader, TextWriter writer, MarkdownPipeline pipeline = null)
{
if (reader == null) throw new ArgumentNullException(nameof(reader));
if (writer == null) throw new ArgumentNullException(nameof(writer));
pipeline = pipeline ?? new MarkdownPipeline();
if (!(pipeline.Renderer is HtmlMarkdownRenderer))
{
pipeline.Renderer = new HtmlMarkdownRenderer(writer);
}
Convert(reader, writer, pipeline);
var document = Parse(reader, pipeline);
pipeline.Renderer.WriteChildren(document);
writer.Flush();
}
@@ -44,10 +50,10 @@ namespace Textamina.Markdig
return Parse(new StringReader(markdown), new MarkdownPipeline());
}
public static Document Parse(TextReader input, MarkdownPipeline pipeline)
public static Document Parse(TextReader input, MarkdownPipeline pipeline = null)
{
if (input == null) throw new ArgumentNullException(nameof(input));
if (pipeline == null) throw new ArgumentNullException(nameof(pipeline));
pipeline = pipeline ?? new MarkdownPipeline();
BlockParserState blockParserState;
InlineParserState inlineParserState;
@@ -56,16 +62,5 @@ namespace Textamina.Markdig
var markdownParser = new MarkdownParser(input, blockParserState, inlineParserState);
return markdownParser.Parse();
}
public static void Convert(TextReader reader, TextWriter writer, MarkdownPipeline pipeline)
{
if (reader == null) throw new ArgumentNullException(nameof(reader));
if (writer == null) throw new ArgumentNullException(nameof(writer));
if (pipeline == null) throw new ArgumentNullException(nameof(pipeline));
var document = Parse(reader, pipeline);
pipeline.Renderer.WriteChildren(document);
writer.Flush();
}
}
}

View File

@@ -283,5 +283,11 @@ namespace Textamina.Markdig.Renderers
}
return this;
}
public override object WriteDocument(Document document)
{
WriteChildren(document);
return textWriter;
}
}
}

View File

@@ -19,6 +19,8 @@ namespace Textamina.Markdig.Renderers
public List<MarkdownObjectRenderer> Renderers { get; }
public abstract object WriteDocument(Document document);
public void WriteChildren(ContainerBlock containerBlock)
{
if (containerBlock == null)