🗜️ build [skip ci]
This commit is contained in:
parent
5be9d6d70e
commit
122dd8b393
File diff suppressed because it is too large
Load Diff
301
lib/marked.js
301
lib/marked.js
@ -75,6 +75,7 @@
|
||||
return {
|
||||
baseUrl: null,
|
||||
breaks: false,
|
||||
extensions: null,
|
||||
gfm: true,
|
||||
headerIds: true,
|
||||
headerPrefix: '',
|
||||
@ -1458,6 +1459,8 @@
|
||||
;
|
||||
|
||||
_proto.blockTokens = function blockTokens(src, tokens, top) {
|
||||
var _this = this;
|
||||
|
||||
if (tokens === void 0) {
|
||||
tokens = [];
|
||||
}
|
||||
@ -1470,10 +1473,24 @@
|
||||
src = src.replace(/^ +$/gm, '');
|
||||
}
|
||||
|
||||
var token, i, l, lastToken;
|
||||
var token, i, l, lastToken, cutSrc, lastParagraphClipped;
|
||||
|
||||
while (src) {
|
||||
// newline
|
||||
var _this$options, _this$options$extensi, _this$options$extensi2;
|
||||
|
||||
if ((_this$options = this.options) != null && (_this$options$extensi = _this$options.extensions) != null && _this$options$extensi.block && this.options.extensions.block.some(function (extTokenizer) {
|
||||
if (token = extTokenizer.call(_this, src, tokens)) {
|
||||
src = src.substring(token.raw.length);
|
||||
tokens.push(token);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
})) {
|
||||
continue;
|
||||
} // newline
|
||||
|
||||
|
||||
if (token = this.tokenizer.space(src)) {
|
||||
src = src.substring(token.raw.length);
|
||||
|
||||
@ -1582,11 +1599,43 @@
|
||||
tokens.push(token);
|
||||
continue;
|
||||
} // top-level paragraph
|
||||
// prevent paragraph consuming extensions by clipping 'src' to extension start
|
||||
|
||||
|
||||
if (top && (token = this.tokenizer.paragraph(src))) {
|
||||
src = src.substring(token.raw.length);
|
||||
cutSrc = src;
|
||||
|
||||
if ((_this$options$extensi2 = this.options.extensions) != null && _this$options$extensi2.startBlock) {
|
||||
(function () {
|
||||
var startIndex = Infinity;
|
||||
var tempSrc = src.slice(1);
|
||||
var tempStart = void 0;
|
||||
|
||||
_this.options.extensions.startBlock.forEach(function (getStartIndex) {
|
||||
tempStart = getStartIndex.call(this, tempSrc);
|
||||
|
||||
if (typeof tempStart === 'number' && tempStart >= 0) {
|
||||
startIndex = Math.min(startIndex, tempStart);
|
||||
}
|
||||
});
|
||||
|
||||
if (startIndex < Infinity && startIndex >= 0) {
|
||||
cutSrc = src.substring(0, startIndex + 1);
|
||||
}
|
||||
})();
|
||||
}
|
||||
|
||||
if (top && (token = this.tokenizer.paragraph(cutSrc))) {
|
||||
lastToken = tokens[tokens.length - 1];
|
||||
|
||||
if (lastParagraphClipped && lastToken.type === 'paragraph') {
|
||||
lastToken.raw += '\n' + token.raw;
|
||||
lastToken.text += '\n' + token.text;
|
||||
} else {
|
||||
tokens.push(token);
|
||||
}
|
||||
|
||||
lastParagraphClipped = cutSrc.length !== src.length;
|
||||
src = src.substring(token.raw.length);
|
||||
continue;
|
||||
} // text
|
||||
|
||||
@ -1694,6 +1743,8 @@
|
||||
;
|
||||
|
||||
_proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {
|
||||
var _this2 = this;
|
||||
|
||||
if (tokens === void 0) {
|
||||
tokens = [];
|
||||
}
|
||||
@ -1706,7 +1757,7 @@
|
||||
inRawBlock = false;
|
||||
}
|
||||
|
||||
var token, lastToken; // String with links masked to avoid interference with em and strong
|
||||
var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong
|
||||
|
||||
var maskedSrc = src;
|
||||
var match;
|
||||
@ -1735,11 +1786,26 @@
|
||||
}
|
||||
|
||||
while (src) {
|
||||
var _this$options2, _this$options2$extens, _this$options$extensi3;
|
||||
|
||||
if (!keepPrevChar) {
|
||||
prevChar = '';
|
||||
}
|
||||
|
||||
keepPrevChar = false; // escape
|
||||
keepPrevChar = false; // extensions
|
||||
|
||||
if ((_this$options2 = this.options) != null && (_this$options2$extens = _this$options2.extensions) != null && _this$options2$extens.inline && this.options.extensions.inline.some(function (extTokenizer) {
|
||||
if (token = extTokenizer.call(_this2, src, tokens)) {
|
||||
src = src.substring(token.raw.length);
|
||||
tokens.push(token);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
})) {
|
||||
continue;
|
||||
} // escape
|
||||
|
||||
|
||||
if (token = this.tokenizer.escape(src)) {
|
||||
src = src.substring(token.raw.length);
|
||||
@ -1752,11 +1818,11 @@
|
||||
src = src.substring(token.raw.length);
|
||||
inLink = token.inLink;
|
||||
inRawBlock = token.inRawBlock;
|
||||
var _lastToken = tokens[tokens.length - 1];
|
||||
lastToken = tokens[tokens.length - 1];
|
||||
|
||||
if (_lastToken && token.type === 'text' && _lastToken.type === 'text') {
|
||||
_lastToken.raw += token.raw;
|
||||
_lastToken.text += token.text;
|
||||
if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
||||
lastToken.raw += token.raw;
|
||||
lastToken.text += token.text;
|
||||
} else {
|
||||
tokens.push(token);
|
||||
}
|
||||
@ -1779,14 +1845,14 @@
|
||||
|
||||
if (token = this.tokenizer.reflink(src, this.tokens.links)) {
|
||||
src = src.substring(token.raw.length);
|
||||
var _lastToken2 = tokens[tokens.length - 1];
|
||||
lastToken = tokens[tokens.length - 1];
|
||||
|
||||
if (token.type === 'link') {
|
||||
token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
|
||||
tokens.push(token);
|
||||
} else if (_lastToken2 && token.type === 'text' && _lastToken2.type === 'text') {
|
||||
_lastToken2.raw += token.raw;
|
||||
_lastToken2.text += token.text;
|
||||
} else if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
||||
lastToken.raw += token.raw;
|
||||
lastToken.text += token.text;
|
||||
} else {
|
||||
tokens.push(token);
|
||||
}
|
||||
@ -1837,9 +1903,32 @@
|
||||
tokens.push(token);
|
||||
continue;
|
||||
} // text
|
||||
// prevent inlineText consuming extensions by clipping 'src' to extension start
|
||||
|
||||
|
||||
if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {
|
||||
cutSrc = src;
|
||||
|
||||
if ((_this$options$extensi3 = this.options.extensions) != null && _this$options$extensi3.startInline) {
|
||||
(function () {
|
||||
var startIndex = Infinity;
|
||||
var tempSrc = src.slice(1);
|
||||
var tempStart = void 0;
|
||||
|
||||
_this2.options.extensions.startInline.forEach(function (getStartIndex) {
|
||||
tempStart = getStartIndex.call(this, tempSrc);
|
||||
|
||||
if (typeof tempStart === 'number' && tempStart >= 0) {
|
||||
startIndex = Math.min(startIndex, tempStart);
|
||||
}
|
||||
});
|
||||
|
||||
if (startIndex < Infinity && startIndex >= 0) {
|
||||
cutSrc = src.substring(0, startIndex + 1);
|
||||
}
|
||||
})();
|
||||
}
|
||||
|
||||
if (token = this.tokenizer.inlineText(cutSrc, inRawBlock, smartypants)) {
|
||||
src = src.substring(token.raw.length);
|
||||
|
||||
if (token.raw.slice(-1) !== '_') {
|
||||
@ -2215,11 +2304,23 @@
|
||||
item,
|
||||
checked,
|
||||
task,
|
||||
checkbox;
|
||||
checkbox,
|
||||
ret;
|
||||
var l = tokens.length;
|
||||
|
||||
for (i = 0; i < l; i++) {
|
||||
token = tokens[i];
|
||||
var _this$options$extensi, _this$options$extensi2;
|
||||
|
||||
token = tokens[i]; // Run any renderer extensions
|
||||
|
||||
if ((_this$options$extensi = this.options.extensions) != null && (_this$options$extensi2 = _this$options$extensi.renderers) != null && _this$options$extensi2[token.type]) {
|
||||
ret = this.options.extensions.renderers[token.type].call(this, token);
|
||||
|
||||
if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
|
||||
out += ret || '';
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
switch (token.type) {
|
||||
case 'space':
|
||||
@ -2383,11 +2484,23 @@
|
||||
renderer = renderer || this.renderer;
|
||||
var out = '',
|
||||
i,
|
||||
token;
|
||||
token,
|
||||
ret;
|
||||
var l = tokens.length;
|
||||
|
||||
for (i = 0; i < l; i++) {
|
||||
token = tokens[i];
|
||||
var _this$options$extensi3, _this$options$extensi4;
|
||||
|
||||
token = tokens[i]; // Run any renderer extensions
|
||||
|
||||
if ((_this$options$extensi3 = this.options.extensions) != null && (_this$options$extensi4 = _this$options$extensi3.renderers) != null && _this$options$extensi4[token.type]) {
|
||||
ret = this.options.extensions.renderers[token.type].call(this, token);
|
||||
|
||||
if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
|
||||
out += ret || '';
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
switch (token.type) {
|
||||
case 'escape':
|
||||
@ -2606,22 +2719,105 @@
|
||||
* Use Extension
|
||||
*/
|
||||
|
||||
marked.use = function (extension) {
|
||||
var opts = merge({}, extension);
|
||||
marked.use = function () {
|
||||
var _this = this;
|
||||
|
||||
if (extension.renderer) {
|
||||
(function () {
|
||||
var renderer = marked.defaults.renderer || new Renderer();
|
||||
|
||||
var _loop = function _loop(prop) {
|
||||
var prevRenderer = renderer[prop];
|
||||
|
||||
renderer[prop] = function () {
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
var ret = extension.renderer[prop].apply(renderer, args);
|
||||
var opts = merge.apply(void 0, [{}].concat(args));
|
||||
var extensions = marked.defaults.extensions || {
|
||||
renderers: {},
|
||||
childTokens: {}
|
||||
};
|
||||
var hasExtensions;
|
||||
args.forEach(function (pack) {
|
||||
// ==-- Parse "addon" extensions --== //
|
||||
if (pack.extensions) {
|
||||
hasExtensions = true;
|
||||
pack.extensions.forEach(function (ext) {
|
||||
if (!ext.name) {
|
||||
throw new Error('extension name required');
|
||||
}
|
||||
|
||||
if (ext.renderer) {
|
||||
var _extensions$renderers;
|
||||
|
||||
// Renderer extensions
|
||||
var prevRenderer = (_extensions$renderers = extensions.renderers) == null ? void 0 : _extensions$renderers[ext.name];
|
||||
|
||||
if (prevRenderer) {
|
||||
// Replace extension with func to run new extension but fall back if false
|
||||
extensions.renderers[ext.name] = function () {
|
||||
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
||||
args[_key2] = arguments[_key2];
|
||||
}
|
||||
|
||||
var ret = ext.renderer.apply(this, args);
|
||||
|
||||
if (ret === false) {
|
||||
ret = prevRenderer.apply(this, args);
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
} else {
|
||||
extensions.renderers[ext.name] = ext.renderer;
|
||||
}
|
||||
}
|
||||
|
||||
if (ext.tokenizer) {
|
||||
// Tokenizer Extensions
|
||||
if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
|
||||
throw new Error("extension level must be 'block' or 'inline'");
|
||||
}
|
||||
|
||||
if (extensions[ext.level]) {
|
||||
extensions[ext.level].unshift(ext.tokenizer);
|
||||
} else {
|
||||
extensions[ext.level] = [ext.tokenizer];
|
||||
}
|
||||
|
||||
if (ext.start) {
|
||||
// Function to check for start of token
|
||||
if (ext.level === 'block') {
|
||||
if (extensions.startBlock) {
|
||||
extensions.startBlock.push(ext.start);
|
||||
} else {
|
||||
extensions.startBlock = [ext.start];
|
||||
}
|
||||
} else if (ext.level === 'inline') {
|
||||
if (extensions.startInline) {
|
||||
extensions.startInline.push(ext.start);
|
||||
} else {
|
||||
extensions.startInline = [ext.start];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ext.childTokens) {
|
||||
// Child tokens to be visited by walkTokens
|
||||
extensions.childTokens[ext.name] = ext.childTokens;
|
||||
}
|
||||
});
|
||||
} // ==-- Parse "overwrite" extensions --== //
|
||||
|
||||
|
||||
if (pack.renderer) {
|
||||
(function () {
|
||||
var renderer = marked.defaults.renderer || new Renderer();
|
||||
|
||||
var _loop = function _loop(prop) {
|
||||
var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false
|
||||
|
||||
renderer[prop] = function () {
|
||||
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
||||
args[_key3] = arguments[_key3];
|
||||
}
|
||||
|
||||
var ret = pack.renderer[prop].apply(renderer, args);
|
||||
|
||||
if (ret === false) {
|
||||
ret = prevRenderer.apply(renderer, args);
|
||||
@ -2631,7 +2827,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
for (var prop in extension.renderer) {
|
||||
for (var prop in pack.renderer) {
|
||||
_loop(prop);
|
||||
}
|
||||
|
||||
@ -2639,19 +2835,19 @@
|
||||
})();
|
||||
}
|
||||
|
||||
if (extension.tokenizer) {
|
||||
if (pack.tokenizer) {
|
||||
(function () {
|
||||
var tokenizer = marked.defaults.tokenizer || new Tokenizer();
|
||||
|
||||
var _loop2 = function _loop2(prop) {
|
||||
var prevTokenizer = tokenizer[prop];
|
||||
var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false
|
||||
|
||||
tokenizer[prop] = function () {
|
||||
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
||||
args[_key2] = arguments[_key2];
|
||||
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
||||
args[_key4] = arguments[_key4];
|
||||
}
|
||||
|
||||
var ret = extension.tokenizer[prop].apply(tokenizer, args);
|
||||
var ret = pack.tokenizer[prop].apply(tokenizer, args);
|
||||
|
||||
if (ret === false) {
|
||||
ret = prevTokenizer.apply(tokenizer, args);
|
||||
@ -2661,19 +2857,20 @@
|
||||
};
|
||||
};
|
||||
|
||||
for (var prop in extension.tokenizer) {
|
||||
for (var prop in pack.tokenizer) {
|
||||
_loop2(prop);
|
||||
}
|
||||
|
||||
opts.tokenizer = tokenizer;
|
||||
})();
|
||||
}
|
||||
} // ==-- Parse WalkTokens extensions --== //
|
||||
|
||||
if (extension.walkTokens) {
|
||||
|
||||
if (pack.walkTokens) {
|
||||
var walkTokens = marked.defaults.walkTokens;
|
||||
|
||||
opts.walkTokens = function (token) {
|
||||
extension.walkTokens(token);
|
||||
pack.walkTokens.call(_this, token);
|
||||
|
||||
if (walkTokens) {
|
||||
walkTokens(token);
|
||||
@ -2681,7 +2878,12 @@
|
||||
};
|
||||
}
|
||||
|
||||
if (hasExtensions) {
|
||||
opts.extensions = extensions;
|
||||
}
|
||||
|
||||
marked.setOptions(opts);
|
||||
});
|
||||
};
|
||||
/**
|
||||
* Run callback for every token
|
||||
@ -2689,7 +2891,7 @@
|
||||
|
||||
|
||||
marked.walkTokens = function (tokens, callback) {
|
||||
for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
|
||||
var _loop3 = function _loop3() {
|
||||
var token = _step.value;
|
||||
callback(token);
|
||||
|
||||
@ -2721,11 +2923,26 @@
|
||||
|
||||
default:
|
||||
{
|
||||
if (token.tokens) {
|
||||
var _marked$defaults, _marked$defaults$exte, _marked$defaults$exte2, _marked$defaults3, _marked$defaults3$ext;
|
||||
|
||||
if ((_marked$defaults = marked.defaults) != null && (_marked$defaults$exte = _marked$defaults.extensions) != null && (_marked$defaults$exte2 = _marked$defaults$exte.childTokens) != null && _marked$defaults$exte2[token.type]) {
|
||||
var _marked$defaults2;
|
||||
|
||||
// Walk any extensions
|
||||
(_marked$defaults2 = marked.defaults) == null ? void 0 : _marked$defaults2.extensions.childTokens[token.type].forEach(function (childTokens) {
|
||||
marked.walkTokens(token[childTokens], callback);
|
||||
});
|
||||
}
|
||||
|
||||
if (token.tokens && !((_marked$defaults3 = marked.defaults) != null && (_marked$defaults3$ext = _marked$defaults3.extensions) != null && _marked$defaults3$ext.childTokens[token.type])) {
|
||||
marked.walkTokens(token.tokens, callback);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
|
||||
_loop3();
|
||||
}
|
||||
};
|
||||
/**
|
||||
|
2
marked.min.js
vendored
2
marked.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user