解决Editor.md通过代码块原样输出Emoji被强制解析问题

  1. 云栖社区>
  2. 博客>
  3. 正文

解决Editor.md通过代码块原样输出Emoji被强制解析问题

代码汇 2018-12-21 23:30:00 浏览456
展开阅读全文

Editor.md是一款优秀的开源Markdown 编辑器,在使用中遇到的一些问题和功能改进分享给需要的伙伴。
项目地址 img_7f969f62ee272a3be19966806fff4ad5.pnghttps://github.com/pandao/editor.md

问题

Editor.md中,如果要输出表情,我们只需要通过代码 :smiley: 就可以输出 img_09e2457de698afee11f53ef04d185587.png

如果我们通过代码块形式原样输出:smiley:,就会被强制解析成 img_09e2457de698afee11f53ef04d185587.png

,这明显不是我们想要的。

通过查看editormd.js源码,可以看到emoji这块的解析正则是这样写的:

editormd.regexs = {
    emoji  : /:([\w\+-]+):/g
}

这样问题就来了,意思就是页面所有被 : :包含的元素都会被解析成 emoji 符号。

解决办法

1丶 第一步

editormd.js中搜索editormd.regexs,修改emoji如下:

editormd.regexs = {
    emoji  : /(?!(<code>).):([\w\+-]+):(?!(<\/code>))/g
}

2丶 第二步

editormd.js中搜索text = text.replace(new RegExp(matchs[i]),大概在3434行。

 text = text.replace(new RegExp(matchs[i]), function($1, $2){

修改为

text = text.replace(emojiReg, function($1, $2){

这样就可以实现在编辑器里面原样输出代码块语法了,其他标签强制解析解决方法和这类似。

由于Editor.md项目目前停止维护了,大家可以看我提交的 img_7f969f62ee272a3be19966806fff4ad5.pngPR

原文地址:代码汇个人博客 http://www.codehui.net/info/15.html


网友评论

登录后评论
0/500
评论
代码汇
+ 关注