Почему Markdig анализирует мои PipelineTables как абзацы?C#

Место общения программистов C#
Ответить
Anonymous
 Почему Markdig анализирует мои PipelineTables как абзацы?

Сообщение Anonymous »

Я пытаюсь создать собственный синтаксический анализатор с помощью Markdig для преобразования Markdown в собственный формат. Обычно это работает, но, когда я пытаюсь обработать таблицу, она передается в мой ParagraphRender вместо моего TableRenderer. Упрощенная версия кода выглядит так:

Код: Выделить всё

public static class MarkdownDocumentExtensions
{
public static MyDocument ToMyDocument(this MarkdownDocument markdownDocument, MarkdownPipeline? pipeline = null)
{
pipeline ??= new MarkdownPipelineBuilder().UsePipeTables().Build();

var renderer = new AdfRenderer();
pipeline.Setup(renderer);

renderer.Render(markdownDocument);

return renderer.GetDocument();
}

public static MyDocument ToMyDocument(this string markdownString)
{
var doc = Markdig.Markdown.Parse(markdownString);
return doc.ToMyDocument(doc, pipeline);
}

}
Тогда мой рендеринг абзацев работает следующим образом:

Код: Выделить всё

public class ParagraphRenderer : MyObjectRenderer
{
protected override void Write(MyRenderer renderer, ParagraphBlock obj)
{
if (obj.Inline != null)
{
renderer.WriteContents(GenerateInlineContent(renderer, obj));
}
else
{
renderer.WriteContents(GenerateLineContent(obj));
}
}
}

public class TableRenderer: MyObjectRenderer
{
protected override void Write(MyRenderer renderer, Table obj) {
// This code never gets called.
}
}
Когда я запускаю следующий пример в своем наборе тестов, он терпит неудачу:

Код: Выделить всё

    [Test]
public void Renderer_ParsesTable()
{
var source = @"Paragraph 1

|Header 1|Header2|Header3|
|--------|-------|-------|
|Row 1 item|22|Banana|
|Row 2 item|41|Biscuit|

Paragraph2";
var doc = source.ToMyDocument();
doc.Content.Count.Should().Be(3);
var table = doc.Content[1];
table.Type.Should().Be("table"); // 

Подробнее здесь: [url]https://stackoverflow.com/questions/79853701/why-is-markdig-parsing-my-pipelinetables-as-paragraphs[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»