Parsedown: установить буквальные перерывы

Parsedown по умолчанию игнорирует все пустые строки.
Если вы не используете его в безопасном режиме или не используете разметку, вы можете просто добавить <br> везде, где вам нужна пустая строка. В противном случае (безопасный режим или разметка сбежали), приятного выхода из этого нет.

По словам разработчиков: «Это не очень большое изменение» включить такую ​​функциональность. На первый взгляд, это пошаговое руководство работает правильно. Однако, исследуя немного дальше, есть несколько случаев, когда он предоставляет неправильный HTML. Пример:

Входные данные:

# Test Cases


| header 1 | header 2 |
| -------- | -------- |
| cell 1.1 | cell 1.2 |
| cell 2.1 | cell 2.2 |



<?php
// code snippet
echo 'Hello World!";
?>


- list 1
- list 2
- list 3


# End of Test

Выход:

<h1>Test Cases</h1>
<p><br />
<br />
| header 1 | header 2 |<br />
| -------- | -------- |<br />
| cell 1.1 | cell 1.2 |<br />
| cell 2.1 | cell 2.2 |<br />
<br />
<br />
<br />
&lt;?php<br />
// code snippet<br />
echo 'Hello World!";<br />
?&gt;<br />
<br />
</p>
<ul>
<li>list 1</li>
<li>list 2</li>
<li>
<p>list 3<br />
<br />
</p>
<h1>End of Test</h1>
</li>
</ul>

Краткое описание ошибок:

  • HTML без табличных тегов
  • HTML без тегов блочного кода
  • список тегов грязный

Есть идеи, как это решить?

 


Заметки
настройка setLiteralBreaks(false) чем Parsedown обеспечивает правильный вывод HTML (конечно, без пустых строк):

<h1>Test Cases</h1>
<table>
<thead>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>cell 1.1</td>
<td>cell 1.2</td>
</tr>
<tr>
<td>cell 2.1</td>
<td>cell 2.2</td>
</tr>
</tbody>
</table>
<pre><code>&lt;?php
// code snippet
echo 'Hello World!";
?&gt;</code></pre>
<ul>
<li>list 1</li>
<li>list 2</li>
<li>list 3</li>
</ul>
<h1>End of Test</h1>

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]