Skip to content

Commit b7eea95

Browse files
authored
fix: fix link reference definitions specs (#2654)
1 parent 36a2b63 commit b7eea95

File tree

4 files changed

+10
-13
lines changed

4 files changed

+10
-13
lines changed

src/Tokenizer.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -365,14 +365,15 @@ export class Tokenizer {
365365
def(src) {
366366
const cap = this.rules.block.def.exec(src);
367367
if (cap) {
368-
if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
369368
const tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
369+
const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';
370+
const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];
370371
return {
371372
type: 'def',
372373
tag,
373374
raw: cap[0],
374-
href: cap[2] ? cap[2].replace(this.rules.inline._escapes, '$1') : cap[2],
375-
title: cap[3] ? cap[3].replace(this.rules.inline._escapes, '$1') : cap[3]
375+
href,
376+
title
376377
};
377378
}
378379
}
@@ -574,7 +575,7 @@ export class Tokenizer {
574575
|| (cap = this.rules.inline.nolink.exec(src))) {
575576
let link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
576577
link = links[link.toLowerCase()];
577-
if (!link || !link.href) {
578+
if (!link) {
578579
const text = cap[0].charAt(0);
579580
return {
580581
type: 'text',

src/rules.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export const block = {
2525
+ '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag
2626
+ '|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag
2727
+ ')',
28-
def: /^ {0,3}\[(label)\]: *(?:\n *)?<?([^\s>]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,
28+
def: /^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,
2929
table: noopTest,
3030
lheading: /^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,
3131
// regex template, placeholders will be replaced according to different paragraph

test/specs/commonmark/commonmark.0.30.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1562,8 +1562,7 @@
15621562
"example": 195,
15631563
"start_line": 3212,
15641564
"end_line": 3220,
1565-
"section": "Link reference definitions",
1566-
"shouldFail": true
1565+
"section": "Link reference definitions"
15671566
},
15681567
{
15691568
"markdown": "[foo]: /url '\ntitle\nline1\nline2\n'\n\n[foo]\n",
@@ -1603,8 +1602,7 @@
16031602
"example": 200,
16041603
"start_line": 3283,
16051604
"end_line": 3289,
1606-
"section": "Link reference definitions",
1607-
"shouldFail": true
1605+
"section": "Link reference definitions"
16081606
},
16091607
{
16101608
"markdown": "[foo]: <bar>(baz)\n\n[foo]\n",

test/specs/gfm/commonmark.0.30.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1562,8 +1562,7 @@
15621562
"example": 195,
15631563
"start_line": 3212,
15641564
"end_line": 3220,
1565-
"section": "Link reference definitions",
1566-
"shouldFail": true
1565+
"section": "Link reference definitions"
15671566
},
15681567
{
15691568
"markdown": "[foo]: /url '\ntitle\nline1\nline2\n'\n\n[foo]\n",
@@ -1603,8 +1602,7 @@
16031602
"example": 200,
16041603
"start_line": 3283,
16051604
"end_line": 3289,
1606-
"section": "Link reference definitions",
1607-
"shouldFail": true
1605+
"section": "Link reference definitions"
16081606
},
16091607
{
16101608
"markdown": "[foo]: <bar>(baz)\n\n[foo]\n",

0 commit comments

Comments
 (0)