标记为具有嵌套列表和段落的列表项返回错误的html

时间:2016-08-20 23:38:57

标签: javascript markdown javascript-marked

尝试将此简单降价转换为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 个答案:

答案 0 :(得分:1)

这绝对是个错误。如您所见,other implementations按预期呈现。

但是,可以认为文档中存在轻微错误。您应该在(外部)列表项的第一行和嵌套列表之间添加一行。

假设您创建的文档仅包含第一个(外部)列表项的内容。正如您对列表进行格式化,如下所示:

section one
* item one
* item two

This is the first section

其中一个以下的大多数Markdown实施interpret

<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

始终为renders

<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

,你会得到很好的,一致的results

嗯,好吧,事实证明,Marked也犯了错误。绝对是一个错误。