markdown-js 添加表格,代码块 parse
简介
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的更多相关文章
- xcode添加快捷代码块
添加快捷代码块 在开发过程中,一些常用的代码段,我们可以设置成快捷代码段来快速实现代码的编写. 如上图中的属性的设置,它们都有相同重复的代码@property (nonatomic, strong), ...
- JS基础_代码块
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Hexo next博客添加折叠块功能添加折叠代码块
前言 有大段的东西想要放上去,但又不想占据大量的位置.折叠是最好的选择.下面在Hexo的主题上定制添加折叠功能. 本文基于Hexo Next的主题修改.其他主题应该也差不多. 在main.js中添加折 ...
- UIView添加支持代码块的手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(a ...
- pycharm如何添加固定代码块
1. file -- settings -- 搜索框输入live,找到 Live Templates 2. 选择你要添加到哪个语言中去,打开python组,并点击右上角 “+”,选择 1.Live T ...
- Markdown中实现折叠代码块
<details> <summary>展开查看</summary> <pre><code> System.out.println(" ...
- 在 MarkDown 中添加表格(例如:在 CSDN 中添加表格)
内容 一.使用 Markdown 创建表格(例如:在 CSDN 中创建表格) 1. 表格格式 对齐方式 -: 设置内容和标题栏居右对齐: :- 设置内容和标题栏居左对齐: :-: 设置内容和标题栏居中 ...
- [HTML]JS添加表格
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【JavaScript】JS中没有代码块的概念
<script> var m = "roboce"; if(m === "roboce"){ var k = "haha"; } ...
随机推荐
- 从零开始编写自己的C#框架(3)——开发规范(转)
由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持. 初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直 ...
- Hibernate主键生成策略(转)
1.自动增长identity 适用于MySQL.DB2.MS SQL Server,采用数据库生成的主键,用于为long.short.int类型生成唯一标识 使用SQL Server 和 MySQL ...
- 解决导入so库报错小结
最近公司准备将重构后的项目上线,可是等到我接手的时候发现一个很纠结的问题:安卓5.0以上的手机(例如我现在在用的红米note3)运行重构后项目发生报错,提示缺少某so库. 而5.0以下的手机(我的小米 ...
- 使用安卓手机上的shh软件ConnectBot管理您的Linux服务器
ConnectBot是一款在Android手机上通过命令行方式连接管理类Unix系统的软件(类Unix系统包含:FreeBSD.OpenBSD.NetBSD.Solaris.Mac.AIX.GUN/L ...
- 【SIGGRAPH】【最终幻想XV】的战斗场景实时演示的要点解说
[SIGGRAPH][最终幻想XV]的战斗场景实时演示的要点解说 原文:西川善司 http://www.4gamer.net/games/999/G999902/20160730004/ ...
- 隐藏ASP.NET站点的HTTP Headers
站点的Headers里面会暴露一些服务器的环境,例如IIS版本.语言的环境等 有时候我们不想让用户了解这类信息那么可以这样做: 1.修改web.config 在 <system.webServe ...
- ssh 文件权限影响登录
进入/etc/ssh目录 需要保证文件访问控制权限如下: ssh_host_dsa_key 600 ssh_host_ras_key 600
- Windows Locale Codes - Sortable list(具体一个语言里还可具体细分,中国是2052,法国是1036)
Windows Locale Codes - Sortable list NOTE: Code page is an outdated method for character encoding, y ...
- 用NotePad如何实现大小写转换
1.小写转换大写 Ctrl + shift + U 2.大写转换小写 Ctrl + U
- JavaScript作用域和闭包
在JavaScript中,作用域是执行代码的上下文.作用域有3种类型: 1.全局作用域 2.局部作用域---(又叫函数作用域) 3.eval作用域 var foo =0;//全局作用域console. ...