Помеченный возвращает неправильный HTML для элемента списка с вложенным списком и абзацем
При попытке конвертировать эту простую уценку в html:
* section one
* item one
* item two
This is the first section
* section two
* item one
* item two
This is the second section
HTML я получаю обратно:
<ul>
<li>
<p>section one</p>
<ul>
<li>item one</li>
<li>
<p>item two</p>
<p>This is the first section</p>
</li>
</ul>
</li>
<li>
<p>section two</p>
<ul>
<li>item one</li>
<li>
<p>item two</p>
<p>This is the second section</p>
</li>
</ul>
</li>
</ul>
Абзацы внутри списка первого уровня являются частью второго элемента списка вложенного списка.
Я ожидаю, что этот абзац будет родным из вложенного списка, я даже протестировал его в разных онлайн-редакторах, и они отображают его так, как я ожидал, и не понравились результаты marked
,
Я делаю что-то не так или это ошибка в marked
?
Я пытался поиграться с вариантами, но ничего не помогло.
Вот код:
const marked = require("marked");
let str = "* section one\n\t* item one\n\t* item two\n\n\tThis is the first section";
str += "\n\n* section two\n\t* item one\n\t* item two\n\n\tThis is the second section";
marked(str)
1 ответ
Это определенно ошибка. Как вы заметили, другие реализации отображаются так, как вы ожидали.
Однако можно утверждать, что в вашем документе есть небольшая ошибка. Вы должны добавить строку между первой строкой вашего (внешнего) элемента списка и вложенным списком.
Предположим, вы создавали документ, который содержал только содержимое первого (внешнего) элемента списка. Поскольку у вас есть форматированный список, это будет выглядеть так:
section one
* item one
* item two
This is the first section
Какие большинство реализаций Markdown интерпретируют в одном из:
<p>section one * item one * item two</p>
<p>This is the first section</p>
или же
<p>section one <em> item one </em> item two</p>
<p>This is the first section</p>
Конечно, вам нужна пустая строка между первой строкой и списком. Как это:
section one
* item one
* item two
This is the first section
Который последовательно отображает как:
<p>section one</p>
<ul>
<li>item one</li>
<li>item two</li>
</ul>
<p>This is the first section</p>
Примените это к вашему полному документу, вот так:
* section one
* item one
* item two
This is the first section
* section two
* item one
* item two
This is the second section
и вы получите хорошие, последовательные результаты:
Хм, ну, оказывается, Маркед тоже ошибается. Определенно ошибка.