【发布时间】:2014-03-14 04:27:44
【问题描述】:
我正在尝试在 AngularJS 中编写降价编辑器。我正在使用 angular-markdown(AngularJS Showdown 包装器)来解析 markdown,我想使用 highlightjs 突出显示代码块。我写了以下摊牌扩展:
/* global
hljs,
Showdown
*/
(function() {
'use strict';
Showdown.extensions.hljs = function(converter) {
return [
{
type: 'lang',
filter: function(text) {
return text;
var m = /([`]{3}[\S\s]*[`]{3})/gm.exec(text);
if(!m) {
return text;
}
for(var i in m) {
if(isNaN(i)) {
continue
}
var match = m[i];
var lang = match.replace(
/([`]{3})([\s\S]*)(\n){1}([\s\S]*)([`]{3})/gm,
'$2');
var code = match.replace(
/([`]{3})([\S\n]*)(\n){1}([\s\S]*)([`]{3})/gm,
'$4');
var hl;
try {
var hl = hljs.highlight(lang, code);
} catch(e) {
var hl = hljs.highlightAuto(code);
}
text = text.replace(match, '<pre>' + hl.value + '</pre>');
}
return text;
}
}
];
};
}());
虽然这还不完美。第一个代码 sn-p 之后的文本也嵌套并突出显示。
我创建了一个 plunkr here。相关代码在js/angular-markdown-hljs.js。
我的问题是:我怎样才能让它发挥作用?
【问题讨论】:
-
你可以看看自己的摊牌prettify extension。
标签: javascript regex highlight showdown