简介

markdown-js 是将 markdown转换成 HTML 的 JavaScript 库,我再网站中使用它来预览 markdown ,但是发现它对 代码块表格 是不转换的。这么鸡肋的地方居然没有修复,所以需要,在不改变它的 js 文件的情况下,把 代码块表格 的预览加上去。

  • jQuery 3.x

代码

////////////////////////////
// code 外加 pre
// 代码中间有空行无法正确 parse
///////////////////////////
var rst = markdown.toHTML($('#new-post-content').val()), mcode = new RegExp(/<code>([a-zA-Z]+)?([^<>]*(\r?\n|\r))+<\/code>/,'gu'), curM = 1;
while(curM !== null){
// mcode不加g选项,会陷入死循环
curM = mcode.exec(rst);
if(curM !== null){
var lang = curM[1] === undefined ? 'text' : curM[1], cont = curM[2];
rst = rst.replace(curM[0], '<pre><code class="'+lang+'">'+cont+'</code></pre>');
}
}
// 中间有空行的
var bcode = new RegExp(/<p><code><\/code>`([a-zA-Z]+)?([^]*)<code><\/code>`<\/p>/,'gu'), curB = 1;
while(curB !== null){
curB = bcode.exec(rst);
if(curB !== null){
var lang = curB[1] === undefined ? 'text' : curB[1], cont = curB[2], cont = cont.replace(/<\/?p>/g, '').replace(/^(\r?\n|\r)/, '');
rst = rst.replace(curB[0], '<pre><code class="'+lang+'">'+cont+'</code></pre>');
}
}
///////////////
// 解析 table
///////////////
var tcode = new RegExp(/(\|(?:[^\r\n\|]+\|)+)(?:\r?\n|\r)\|(?:[-—]+\|)+((?:(?:\r?\n|\r)(?:\|(?:[^\n\r\|]+\|)+))+)/,'gu'), curT = 1;
while(curT !== null){
curT=tcode.exec(rst);
if(curT !== null){
console.log(curT[2].split(/\r?\n|\r/));
var rows = curT[2].split(/\r?\n|\r/).filter(function(a){return a.length === 0 ? false : true;}), rowtrs = '<table><thead><tr><td>'+curT[1].split('|').slice(1,-1).join('</td><td>')+'</td></tr></thead><tbody>';
console.log(rows);
for(var i in rows){
rowtrs += '<tr><td>'+rows[i].split('|').slice(1,-1).join("</td><td>")+'</td></tr>';
}
rowtrs += '</tbody></table>';
rst = rst.replace(curT[0], rowtrs);
}
};
$('#output').html(rst);

结果

现在可以简单的对表格和多行的 code 块预览了

markdown-js 添加表格,代码块 parse的更多相关文章

  1. xcode添加快捷代码块

    添加快捷代码块 在开发过程中,一些常用的代码段,我们可以设置成快捷代码段来快速实现代码的编写. 如上图中的属性的设置,它们都有相同重复的代码@property (nonatomic, strong), ...

  2. JS基础_代码块

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. Hexo next博客添加折叠块功能添加折叠代码块

    前言 有大段的东西想要放上去,但又不想占据大量的位置.折叠是最好的选择.下面在Hexo的主题上定制添加折叠功能. 本文基于Hexo Next的主题修改.其他主题应该也差不多. 在main.js中添加折 ...

  4. UIView添加支持代码块的手势

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(a ...

  5. pycharm如何添加固定代码块

    1. file -- settings -- 搜索框输入live,找到 Live Templates 2. 选择你要添加到哪个语言中去,打开python组,并点击右上角 “+”,选择 1.Live T ...

  6. Markdown中实现折叠代码块

    <details> <summary>展开查看</summary> <pre><code> System.out.println(" ...

  7. 在 MarkDown 中添加表格(例如:在 CSDN 中添加表格)

    内容 一.使用 Markdown 创建表格(例如:在 CSDN 中创建表格) 1. 表格格式 对齐方式 -: 设置内容和标题栏居右对齐: :- 设置内容和标题栏居左对齐: :-: 设置内容和标题栏居中 ...

  8. [HTML]JS添加表格

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 【JavaScript】JS中没有代码块的概念

    <script> var m = "roboce"; if(m === "roboce"){ var k = "haha"; } ...

随机推荐

  1. 修改SQL SERVER表,并添加说明

    alter table dbo.user_PersonManagement add F_FGBM nvarchar(500)GO EXEC sys.sp_addextendedproperty @na ...

  2. Organization SYMMETRIC MULTIPROCESSORS

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Figure 17.4 depicts i ...

  3. 转: git复制到非空目录

    1. 进入非空目录,假设是 /workdir/proj1 2. git clone --no-checkout https://domain_or_ip/source.git tmp 3. mv tm ...

  4. 【vue.js权威指南】读书笔记(第一章)

    最近在读新书<vue.js权威指南>,一边读,一边把笔记整理下来,方便自己以后温故知新,也希望能把自己的读书心得分享给大家. [第1章:遇见vue.js] vue.js是什么? vue.j ...

  5. 系统右键自定义功能-右键备份【C#】

    平时在某些公司发布网站的时候,都是手动备份文件,以免发布错误,做回滚使用.频繁的发布,在做备份的时候也会稍稍浪费点时间.当然在一些大的公司都会有一些自动发布系统,就不会出现这种问题了,对这种问题,我做 ...

  6. javascript中的对象,原型,原型链和面向对象

    一.javascript中的属性.方法 1.首先,关于javascript中的函数/“方法”,说明两点: 1)如果访问的对象属性是一个函数,有些开发者容易认为该函数属于这个对象,因此把“属性访问”叫做 ...

  7. spring Date JPA的主要编程接口

    Repository:最顶层的接口,是一个空接口,主要目的是为了同一所有Repository的类型,并且让组件扫描的时候自动识别. CrudRepository:是Repository的子接口,提供增 ...

  8. grunt 入门学习

    前端工作流,Grunt上手指南 Posted@2013-04-20 7:15 a.m. CategoriesGrunt ,  javascript 我想先花点时间回忆一下作为一个前端需要做的工作(Lo ...

  9. hadoop的学习

    http://www.aboutyun.com/thread-6179-1-1.html

  10. c#-SimHash匹配相似-算法

    使用场景:Google 的 simhash 算法 //通过大量测试,simhash用于比较大文本,比如500字以上效果都还蛮好,距离小于3的基本都是相似,误判率也比较低. //从我的经验,如果我们假定 ...