将Markdown / ASCI(多行)转换为HTML(nodejs)

时间:2016-08-18 16:39:21

标签: javascript node.js markdown

我目前在我的编辑器中有这个..

* Line one
* Line two
some more info

它位于数据库中

* Line one\r\n* Line two\r\nsome more info

我正在使用Markdown软件包将markdown转为HTML以显示在我的网站上,这样可以正常工作。

然而它忽略了换行符,因此给了我这个输出......

<ul><li>Line one</li><li>Line two\r\nsome more info</li></ul>

当我想要的输出是......

<ul><li>Line one</li><li>Line two</li></ul>some more info

我想在运行降价之前我需要从我的单行制作一个'多行字符串'?

对最佳方法的想法?

目前正在使用此代码

var markdown = require( "markdown" ).markdown;
var unMarkdownDescriptions = function(description){
    //Check if currently contains HTML.
    if(typeof description !== "undefined"){
        if(description.indexOf("<")  !=-1){
            return description;
        }else{

            return html_content = markdown.toHTML(description);
        }    
    }else{
        return '';
    }
}

当前代码检查是否已经在数据库中存储为HTML并忽略它们(我们从HTML迁移到MD,ERP上生成的HTML在最好的时候是狡猾的!)

1 个答案:

答案 0 :(得分:2)

  

然而,它忽略了换行符

根据Markdown spec

,它应该如何表现
  

段落只是一个或多个连续的文本行,由一个或多个空行分隔。 (空行是任何看起来像空行的行 - 除了空格或制表符之外的任何行都被视为空白。)正常段落不应使用空格或制表符缩进。

     

“一个或多个连续文本行”规则的含义是Markdown支持“硬包装”文本段落。这与大多数其他文本到HTML格式化程序(包括Movable Type的“转换换行符”选项)显着不同,后者将段落中的每个换行符转换为<br />标记。

要获得所需的输出,只需在列表后面加一个空白行:

* Line one
* Line two

some more info