如何使用showdown使用GitHub样式处理换行符?
我尝试了一个类似于:
的扩展程序return text.replace(/[ ]*\n/g, "<br />\n")
它在某些情况下有效,但例如打破了列表。
答案 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);