如何在摊牌时将单线休息视为什么?

时间:2015-10-08 16:23:13

标签: markdown showdown

如何使用showdown使用GitHub样式处理换行符?

我尝试了一个类似于:

的扩展程序
return text.replace(/[ ]*\n/g, "<br />\n")

它在某些情况下有效,但例如打破了列表。

3 个答案:

答案 0 :(得分:4)

好的,所以我想出了那样做的扩展。

/**
 * Showdown extension for GFM newlines.
 * 
 * In very clear cases, let newlines become <br/> tags.
 *
 * This implementation is adopted from showdown-ghost.
 *
 */
(function () {
    var newline = function () {
        return [{
            type: 'lang',
            filter: function(text) {
                return text.replace(/^( *(\d+\.  {1,4}|[\w\<\'\">\-*+])[^\n]*)\n{1}(?!\n| *\d+\. {1,4}| *[-*+] +|#|$)/gm, function(e) {
                    return e.trim() + "  \n";
                })
            }
        }];
    };

    if (window.showdown) {
        window.showdown.extensions.newline = newline;
    }
})();

这对我来说很有用,虽然正则表达式没有100%经过测试,并且可能会在极少数情况下失败,所以请考虑自己警告。

答案 1 :(得分:3)

感谢这个伟大的扩展。这对我的一个项目非常有帮助。

看起来这种定义扩展的方式是deprecated now。由于他们没有更新文档,我使用了美化扩展作为模板来更新您编写的扩展,以在showdown中编写扩展的新方式:

(function (extension) {
  'use strict';

  if (typeof showdown !== 'undefined') {
    extension(showdown);
  } else if (typeof define === 'function' && define.amd) {
    define(['showdown'], extension);
  } else if (typeof exports === 'object') {
    module.exports = extension(require('showdown'));
  } else {
    throw Error('Could not find showdown library');
  }

}(function(showdown){
  'use strict';
  showdown.extension('newline', function() {
    return [{
      type: 'lang',
      filter: function(text) {
        return text.replace(/^( *(\d+\.  {1,4}|[\w\<\'\">\-*+])[^\n]*)\n{1}(?!\n| *\d+\. {1,4}| *[-*+] +|#|$)/gm, function(e) {
          return e.trim() + "  \n";
        });
      }
    }];
  })
}));

答案 2 :(得分:0)

可能对将来的读者有所帮助。摊牌现在可以执行此操作。

converter.setOption('simpleLineBreaks', true);