Skip to content

Commit 4c24702

Browse files
author
MarkedJS bot
committed
🗜️ build [skip ci]
1 parent edc857c commit 4c24702

File tree

4 files changed

+96
-73
lines changed

4 files changed

+96
-73
lines changed

lib/marked.cjs

+38-25
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function _defineProperties(target, props) {
1717
descriptor.enumerable = descriptor.enumerable || false;
1818
descriptor.configurable = true;
1919
if ("value" in descriptor) descriptor.writable = true;
20-
Object.defineProperty(target, descriptor.key, descriptor);
20+
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
2121
}
2222
}
2323
function _createClass(Constructor, protoProps, staticProps) {
@@ -59,6 +59,20 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
5959
}
6060
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
6161
}
62+
function _toPrimitive(input, hint) {
63+
if (typeof input !== "object" || input === null) return input;
64+
var prim = input[Symbol.toPrimitive];
65+
if (prim !== undefined) {
66+
var res = prim.call(input, hint || "default");
67+
if (typeof res !== "object") return res;
68+
throw new TypeError("@@toPrimitive must return a primitive value.");
69+
}
70+
return (hint === "string" ? String : Number)(input);
71+
}
72+
function _toPropertyKey(arg) {
73+
var key = _toPrimitive(arg, "string");
74+
return typeof key === "symbol" ? key : String(key);
75+
}
6276

6377
function getDefaults() {
6478
return {
@@ -480,10 +494,14 @@ var Tokenizer = /*#__PURE__*/function () {
480494
var cap = this.rules.block.blockquote.exec(src);
481495
if (cap) {
482496
var text = cap[0].replace(/^ *>[ \t]?/gm, '');
497+
var top = this.lexer.state.top;
498+
this.lexer.state.top = true;
499+
var tokens = this.lexer.blockTokens(text);
500+
this.lexer.state.top = top;
483501
return {
484502
type: 'blockquote',
485503
raw: cap[0],
486-
tokens: this.lexer.blockTokens(text, []),
504+
tokens: tokens,
487505
text: text
488506
};
489507
}
@@ -631,26 +649,21 @@ var Tokenizer = /*#__PURE__*/function () {
631649
for (i = 0; i < l; i++) {
632650
this.lexer.state.top = false;
633651
list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);
634-
var spacers = list.items[i].tokens.filter(function (t) {
635-
return t.type === 'space';
636-
});
637-
var hasMultipleLineBreaks = spacers.every(function (t) {
638-
var chars = t.raw.split('');
639-
var lineBreaks = 0;
640-
for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {
641-
var _char = _step.value;
642-
if (_char === '\n') {
643-
lineBreaks += 1;
644-
}
645-
if (lineBreaks > 1) {
646-
return true;
647-
}
648-
}
649-
return false;
650-
});
651-
if (!list.loose && spacers.length && hasMultipleLineBreaks) {
652-
// Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item
653-
list.loose = true;
652+
if (!list.loose) {
653+
// Check if list should be loose
654+
var spacers = list.items[i].tokens.filter(function (t) {
655+
return t.type === 'space';
656+
});
657+
var hasMultipleLineBreaks = spacers.length > 0 && spacers.some(function (t) {
658+
return /\n.*\n/.test(t.raw);
659+
});
660+
list.loose = hasMultipleLineBreaks;
661+
}
662+
}
663+
664+
// Set all items to loose if list is loose
665+
if (list.loose) {
666+
for (i = 0; i < l; i++) {
654667
list.items[i].loose = true;
655668
}
656669
}
@@ -1027,9 +1040,9 @@ var Tokenizer = /*#__PURE__*/function () {
10271040
} while (prevCapZero !== cap[0]);
10281041
text = escape(cap[0]);
10291042
if (cap[1] === 'www.') {
1030-
href = 'http://' + text;
1043+
href = 'http://' + cap[0];
10311044
} else {
1032-
href = text;
1045+
href = cap[0];
10331046
}
10341047
}
10351048
return {
@@ -1242,7 +1255,7 @@ inline.gfm = merge({}, inline.normal, {
12421255
escape: edit(inline.escape).replace('])', '~|])').getRegex(),
12431256
_extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
12441257
url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
1245-
_backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
1258+
_backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
12461259
del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
12471260
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
12481261
});

lib/marked.esm.js

+19-22
Original file line numberDiff line numberDiff line change
@@ -459,11 +459,14 @@ class Tokenizer {
459459
const cap = this.rules.block.blockquote.exec(src);
460460
if (cap) {
461461
const text = cap[0].replace(/^ *>[ \t]?/gm, '');
462-
462+
const top = this.lexer.state.top;
463+
this.lexer.state.top = true;
464+
const tokens = this.lexer.blockTokens(text);
465+
this.lexer.state.top = top;
463466
return {
464467
type: 'blockquote',
465468
raw: cap[0],
466-
tokens: this.lexer.blockTokens(text, []),
469+
tokens,
467470
text
468471
};
469472
}
@@ -625,25 +628,19 @@ class Tokenizer {
625628
for (i = 0; i < l; i++) {
626629
this.lexer.state.top = false;
627630
list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);
628-
const spacers = list.items[i].tokens.filter(t => t.type === 'space');
629-
const hasMultipleLineBreaks = spacers.every(t => {
630-
const chars = t.raw.split('');
631-
let lineBreaks = 0;
632-
for (const char of chars) {
633-
if (char === '\n') {
634-
lineBreaks += 1;
635-
}
636-
if (lineBreaks > 1) {
637-
return true;
638-
}
639-
}
640631

641-
return false;
642-
});
632+
if (!list.loose) {
633+
// Check if list should be loose
634+
const spacers = list.items[i].tokens.filter(t => t.type === 'space');
635+
const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw));
643636

644-
if (!list.loose && spacers.length && hasMultipleLineBreaks) {
645-
// Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item
646-
list.loose = true;
637+
list.loose = hasMultipleLineBreaks;
638+
}
639+
}
640+
641+
// Set all items to loose if list is loose
642+
if (list.loose) {
643+
for (i = 0; i < l; i++) {
647644
list.items[i].loose = true;
648645
}
649646
}
@@ -1049,9 +1046,9 @@ class Tokenizer {
10491046
} while (prevCapZero !== cap[0]);
10501047
text = escape(cap[0]);
10511048
if (cap[1] === 'www.') {
1052-
href = 'http://' + text;
1049+
href = 'http://' + cap[0];
10531050
} else {
1054-
href = text;
1051+
href = cap[0];
10551052
}
10561053
}
10571054
return {
@@ -1368,7 +1365,7 @@ inline.gfm = merge({}, inline.normal, {
13681365
escape: edit(inline.escape).replace('])', '~|])').getRegex(),
13691366
_extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
13701367
url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
1371-
_backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
1368+
_backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
13721369
del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
13731370
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
13741371
});

lib/marked.umd.js

+38-25
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
descriptor.enumerable = descriptor.enumerable || false;
2222
descriptor.configurable = true;
2323
if ("value" in descriptor) descriptor.writable = true;
24-
Object.defineProperty(target, descriptor.key, descriptor);
24+
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
2525
}
2626
}
2727
function _createClass(Constructor, protoProps, staticProps) {
@@ -63,6 +63,20 @@
6363
}
6464
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
6565
}
66+
function _toPrimitive(input, hint) {
67+
if (typeof input !== "object" || input === null) return input;
68+
var prim = input[Symbol.toPrimitive];
69+
if (prim !== undefined) {
70+
var res = prim.call(input, hint || "default");
71+
if (typeof res !== "object") return res;
72+
throw new TypeError("@@toPrimitive must return a primitive value.");
73+
}
74+
return (hint === "string" ? String : Number)(input);
75+
}
76+
function _toPropertyKey(arg) {
77+
var key = _toPrimitive(arg, "string");
78+
return typeof key === "symbol" ? key : String(key);
79+
}
6680

6781
function getDefaults() {
6882
return {
@@ -484,10 +498,14 @@
484498
var cap = this.rules.block.blockquote.exec(src);
485499
if (cap) {
486500
var text = cap[0].replace(/^ *>[ \t]?/gm, '');
501+
var top = this.lexer.state.top;
502+
this.lexer.state.top = true;
503+
var tokens = this.lexer.blockTokens(text);
504+
this.lexer.state.top = top;
487505
return {
488506
type: 'blockquote',
489507
raw: cap[0],
490-
tokens: this.lexer.blockTokens(text, []),
508+
tokens: tokens,
491509
text: text
492510
};
493511
}
@@ -635,26 +653,21 @@
635653
for (i = 0; i < l; i++) {
636654
this.lexer.state.top = false;
637655
list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);
638-
var spacers = list.items[i].tokens.filter(function (t) {
639-
return t.type === 'space';
640-
});
641-
var hasMultipleLineBreaks = spacers.every(function (t) {
642-
var chars = t.raw.split('');
643-
var lineBreaks = 0;
644-
for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {
645-
var _char = _step.value;
646-
if (_char === '\n') {
647-
lineBreaks += 1;
648-
}
649-
if (lineBreaks > 1) {
650-
return true;
651-
}
652-
}
653-
return false;
654-
});
655-
if (!list.loose && spacers.length && hasMultipleLineBreaks) {
656-
// Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item
657-
list.loose = true;
656+
if (!list.loose) {
657+
// Check if list should be loose
658+
var spacers = list.items[i].tokens.filter(function (t) {
659+
return t.type === 'space';
660+
});
661+
var hasMultipleLineBreaks = spacers.length > 0 && spacers.some(function (t) {
662+
return /\n.*\n/.test(t.raw);
663+
});
664+
list.loose = hasMultipleLineBreaks;
665+
}
666+
}
667+
668+
// Set all items to loose if list is loose
669+
if (list.loose) {
670+
for (i = 0; i < l; i++) {
658671
list.items[i].loose = true;
659672
}
660673
}
@@ -1031,9 +1044,9 @@
10311044
} while (prevCapZero !== cap[0]);
10321045
text = escape(cap[0]);
10331046
if (cap[1] === 'www.') {
1034-
href = 'http://' + text;
1047+
href = 'http://' + cap[0];
10351048
} else {
1036-
href = text;
1049+
href = cap[0];
10371050
}
10381051
}
10391052
return {
@@ -1246,7 +1259,7 @@
12461259
escape: edit(inline.escape).replace('])', '~|])').getRegex(),
12471260
_extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
12481261
url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
1249-
_backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
1262+
_backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
12501263
del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
12511264
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
12521265
});

marked.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)