mirror of
https://github.com/xoofx/markdig.git
synced 2026-10-08 06:38:39 +00:00
fix block nodes
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -40,6 +40,7 @@ namespace Markdig.Parsers
|
||||
{
|
||||
startChar = endChar;
|
||||
}
|
||||
state.NextChar();
|
||||
c = state.NextChar();
|
||||
countDigit++;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace Markdig.Parsers
|
||||
{
|
||||
if (delimiter == orderedDelimiter)
|
||||
{
|
||||
state.NextChar();
|
||||
state.NextChar();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -12,17 +12,19 @@ namespace Markdig.Renderers.Normalize
|
||||
/// <seealso cref="NormalizeObjectRenderer{QuoteBlock}" />
|
||||
public class QuoteBlockRenderer : NormalizeObjectRenderer<QuoteBlock>
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user