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 />
<?php<br />
// code snippet<br />
echo 'Hello World!";<br />
?><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>
Краткое описание ошибок:
Есть идеи, как это решить?
Заметки
настройка 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><?php
// code snippet
echo 'Hello World!";
?></code></pre>
<ul>
<li>list 1</li>
<li>list 2</li>
<li>list 3</li>
</ul>
<h1>End of Test</h1>
Задача ещё не решена.
Других решений пока нет …