[go: nahoru, domu]

Skip to content

Commit

Permalink
reimplement async highlighting feature. whitespace.
Browse files Browse the repository at this point in the history
  • Loading branch information
chjj committed Dec 4, 2013
1 parent 2d5090b commit 76ac4da
Showing 1 changed file with 64 additions and 26 deletions.
90 changes: 64 additions & 26 deletions lib/marked.js
Original file line number Diff line number Diff line change
Expand Up @@ -1083,37 +1083,75 @@ function marked(src, opt, callback) {
callback = opt;
opt = null;
}

opt = merge({}, marked.defaults, opt || {});
}
try {
var renderer = null;
if (opt) {
opt = merge({}, marked.defaults, opt);
renderer = opt.renderer || null;

var highlight = opt.highlight
, tokens
, pending
, i = 0;

try {
tokens = Lexer.lex(src, opt)
} catch (e) {
return callback(e);
}
var out = Parser.parse(Lexer.lex(src, opt), opt, renderer);
if (callback) {
return callback(null, out);
} else {
return out;

pending = tokens.length;

var done = function() {
var out, err;

try {
out = Parser.parse(tokens, opt, opt.renderer);
} catch (e) {
err = e;
}

opt.highlight = highlight;

return err
? callback(err)
: callback(null, out);
};

if (!highlight || highlight.length < 3) {
return done();
}

delete opt.highlight;

if (!pending) return done();

for (; i < tokens.length; i++) {
(function(token) {
if (token.type !== 'code') {
return --pending || done();
}
return highlight(token.text, token.lang, function(err, code) {
if (code == null || code === token.text) {
return --pending || done();
}
token.text = code;
token.escaped = true;
--pending || done();
});
})(tokens[i]);
}

return;
}
try {
if (opt) opt = merge({}, marked.defaults, opt);
return Parser.parse(Lexer.lex(src, opt), opt, opt && opt.renderer);
} catch (e) {
e.message += '\nPlease report this to https://github.com/chjj/marked.';
if ((opt || marked.defaults).silent) {
var msg = '<p>An error occured:</p><pre>'
return '<p>An error occured:</p><pre>'
+ escape(e.message + '', true)
+ '</pre>';
if (callback) {
callback(msg);
} else {
return msg;
}
}
if (callback) {
callback(e);
} else {
throw e;
}
throw e;
}
}

Expand Down Expand Up @@ -1159,13 +1197,13 @@ marked.inlineLexer = InlineLexer.output;
marked.parse = marked;

if (typeof exports === 'object') {
module.exports = marked;
module.exports = marked;
} else if (typeof define === 'function' && define.amd) {
define(function() { return marked; });
define(function() { return marked; });
} else {
this.marked = marked;
this.marked = marked;
}

}).call(function() {
return this || (typeof window !== 'undefined' ? window : global);
return this || (typeof window !== 'undefined' ? window : global);
}());

0 comments on commit 76ac4da

Please sign in to comment.