diff --git a/src/Markdig.Tests/TestCst.cs b/src/Markdig.Tests/TestCst.cs
index b8887409..fa0a425d 100644
--- a/src/Markdig.Tests/TestCst.cs
+++ b/src/Markdig.Tests/TestCst.cs
@@ -106,6 +106,13 @@ namespace Markdig.Tests
[TestCase(" p\n\n p ")]
[TestCase("p \n\n p ")]
[TestCase(" p \n\n p ")]
+
+ // special cases
+ [TestCase(" p \n\n\n\n p \n\n")]
+ [TestCase("\np")]
+ [TestCase("\n\np")]
+ [TestCase("p\n")]
+ [TestCase("p\n\n")]
public void TestParagraph(string value)
{
RoundTrip(value);
@@ -128,11 +135,19 @@ namespace Markdig.Tests
[TestCase("- i1\n- i2")]
[TestCase("- i1\n - i2")]
[TestCase("- i1\n - i1.1\n - i1.2")]
- public void TestList(string value)
+ public void TestUnorederedList(string value)
{
RoundTrip(value);
}
+ [TestCase("1. i")]
+ [TestCase("1. i")]
+ [TestCase("1. i ")]
+ [TestCase("1. i ")]
+ public void TestOrderedList(string value)
+ {
+ RoundTrip(value);
+ }
[Test]
public void TestImage()
@@ -158,7 +173,7 @@ namespace Markdig.Tests
[TestCase(" - > q")]
[TestCase(" - > q")]
[TestCase(" - > q1\n - > q2")]
- public void TestListItem_BlockQuote(string value)
+ public void TestUnorderedListItem_BlockQuote(string value)
{
RoundTrip(value);
}
@@ -172,6 +187,16 @@ namespace Markdig.Tests
RoundTrip(value);
}
+ [TestCase("\n> q")]
+ [TestCase("\n> q\n")]
+ [TestCase("\n> q\n\n")]
+ [TestCase("> q\n\np")]
+ [TestCase("p\n\n> q\n\n# h")]
+ public void TestBlockQuote_Paragraph(string value)
+ {
+ RoundTrip(value);
+ }
+
[Test]
public void TestBlockQuote()
{
@@ -362,5 +387,19 @@ namespace Markdig.Tests
{
RoundTrip(value);
}
+
+ [TestCase("```\nc\n```")]
+ [TestCase("\n```\nc\n```")]
+ [TestCase("\n\n```\nc\n```")]
+ [TestCase("```\nc\n```\n")]
+ [TestCase("```\nc\n```\n\n")]
+ [TestCase("\n```\nc\n```\n")]
+ [TestCase("\n```\nc\n```\n\n")]
+ [TestCase("\n\n```\nc\n```\n")]
+ [TestCase("\n\n```\nc\n```\n\n")]
+ public void TestCodeBlock(string value)
+ {
+ RoundTrip(value);
+ }
}
}
diff --git a/src/Markdig/Parsers/FencedCodeBlockParser.cs b/src/Markdig/Parsers/FencedCodeBlockParser.cs
index 41c8937b..694837c5 100644
--- a/src/Markdig/Parsers/FencedCodeBlockParser.cs
+++ b/src/Markdig/Parsers/FencedCodeBlockParser.cs
@@ -26,7 +26,11 @@ namespace Markdig.Parsers
protected override FencedCodeBlock CreateFencedBlock(BlockProcessor processor)
{
- return new FencedCodeBlock(this) {IndentCount = processor.Indent};
+ return new FencedCodeBlock(this)
+ {
+ IndentCount = processor.Indent,
+ LinesBefore = processor.UseLinesBefore(),
+ };
}
public override BlockState TryContinue(BlockProcessor processor, Block block)
diff --git a/src/Markdig/Parsers/NumberedListItemParser.cs b/src/Markdig/Parsers/NumberedListItemParser.cs
index 07dc0ed2..2650bd2f 100644
--- a/src/Markdig/Parsers/NumberedListItemParser.cs
+++ b/src/Markdig/Parsers/NumberedListItemParser.cs
@@ -40,6 +40,7 @@ namespace Markdig.Parsers
{
startChar = endChar;
}
+ state.NextChar();
c = state.NextChar();
countDigit++;
}
diff --git a/src/Markdig/Parsers/OrderedListItemParser.cs b/src/Markdig/Parsers/OrderedListItemParser.cs
index 23d694b8..2e20796e 100644
--- a/src/Markdig/Parsers/OrderedListItemParser.cs
+++ b/src/Markdig/Parsers/OrderedListItemParser.cs
@@ -37,6 +37,7 @@ namespace Markdig.Parsers
{
if (delimiter == orderedDelimiter)
{
+ state.NextChar();
state.NextChar();
return true;
}
diff --git a/src/Markdig/Parsers/ParagraphBlockParser.cs b/src/Markdig/Parsers/ParagraphBlockParser.cs
index ee92fe21..bc12da7a 100644
--- a/src/Markdig/Parsers/ParagraphBlockParser.cs
+++ b/src/Markdig/Parsers/ParagraphBlockParser.cs
@@ -103,7 +103,7 @@ namespace Markdig.Parsers
Level = level,
Lines = paragraph.Lines,
BeforeWhitespace = state.PopBeforeWhitespace(state.Column),
- LinesBefore = state.UseLinesBefore()
+ LinesBefore = state.UseLinesBefore(),
};
//heading.Lines.Trim();
diff --git a/src/Markdig/Parsers/QuoteBlockParser.cs b/src/Markdig/Parsers/QuoteBlockParser.cs
index 915bd8bb..066cfe95 100644
--- a/src/Markdig/Parsers/QuoteBlockParser.cs
+++ b/src/Markdig/Parsers/QuoteBlockParser.cs
@@ -51,6 +51,7 @@ namespace Markdig.Parsers
Span = new SourceSpan(sourcePosition, processor.Line.End),
BeforeWhitespace = processor.PopBeforeWhitespace(column),
HasSpaceAfterQuoteChar = hasSpaceAfterQuoteChar,
+ LinesBefore = processor.UseLinesBefore()
});
processor.WhitespaceStart += whitespaceToAdd;
return BlockState.Continue;
diff --git a/src/Markdig/Renderers/Normalize/CodeBlockRenderer.cs b/src/Markdig/Renderers/Normalize/CodeBlockRenderer.cs
index 4a6f11e9..6aaa495d 100644
--- a/src/Markdig/Renderers/Normalize/CodeBlockRenderer.cs
+++ b/src/Markdig/Renderers/Normalize/CodeBlockRenderer.cs
@@ -18,6 +18,7 @@ namespace Markdig.Renderers.Normalize
{
if (obj is FencedCodeBlock fencedCodeBlock)
{
+ renderer.RenderLinesBefore(obj);
var opening = new string(fencedCodeBlock.FencedChar, fencedCodeBlock.FencedCharCount);
renderer.Write(opening);
@@ -55,6 +56,7 @@ namespace Markdig.Renderers.Normalize
renderer.WriteLeafRawLines(obj, true);
renderer.Write(opening);
+ renderer.RenderLinesAfter(obj);
}
else
{
diff --git a/src/Markdig/Renderers/Normalize/QuoteBlockRenderer.cs b/src/Markdig/Renderers/Normalize/QuoteBlockRenderer.cs
index 4f773e7a..43f341b9 100644
--- a/src/Markdig/Renderers/Normalize/QuoteBlockRenderer.cs
+++ b/src/Markdig/Renderers/Normalize/QuoteBlockRenderer.cs
@@ -12,17 +12,19 @@ namespace Markdig.Renderers.Normalize
///
public class QuoteBlockRenderer : NormalizeObjectRenderer
{
- protected override void Write(NormalizeRenderer renderer, QuoteBlock obj)
+ protected override void Write(NormalizeRenderer renderer, QuoteBlock quoteBlock)
{
- renderer.Write(obj.BeforeWhitespace);
+ renderer.RenderLinesBefore(quoteBlock);
+ renderer.Write(quoteBlock.BeforeWhitespace);
- var quoteIndent = obj.HasSpaceAfterQuoteChar ? obj.QuoteChar + " " : obj.QuoteChar.ToString();
+ var quoteIndent = quoteBlock.HasSpaceAfterQuoteChar ? quoteBlock.QuoteChar + " " : quoteBlock.QuoteChar.ToString();
//renderer.PushIndent(quoteIndent);
renderer.Write(quoteIndent);
- renderer.WriteChildren(obj);
+ renderer.WriteChildren(quoteBlock);
//renderer.PopIndent();
renderer.FinishBlock();
+ renderer.RenderLinesAfter(quoteBlock);
}
}
}
\ No newline at end of file