Skip to content

Commit 9782714

Browse files
committed
Merge pull request #209 from Elberet/fix-bbcode-refs
FIX: edge cases with bbcodes looking like reference definitions and empty links
2 parents 48d435e + 528c80f commit 9782714

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/dialects/gruber.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ define(['../markdown_helpers', './dialect_helpers', '../parser'], function (Mark
457457
},
458458

459459
referenceDefn: function referenceDefn( block, next) {
460-
var re = /^\s*\[(.*?)\]:\s*(\S+)(?:\s+(?:(['"])(.*)\3|\((.*?)\)))?\n?/;
460+
var re = /^\s*\[([^\[\]]+)\]:\s*(\S+)(?:\s+(?:(['"])(.*)\3|\((.*?)\)))?\n?/;
461461
// interesting matches are [ , ref_id, url, , title, title ]
462462

463463
if ( !block.match(re) )
@@ -612,6 +612,9 @@ define(['../markdown_helpers', './dialect_helpers', '../parser'], function (Mark
612612
return [ res[0] + 1, text.charAt(0) ].concat(res[2]);
613613
}
614614

615+
// empty link
616+
if ( res[0] === 1 ) { return [ 2, "[]" ]; }
617+
615618
var consumed = 1 + res[ 0 ],
616619
children = res[ 1 ],
617620
link,

test/regressions.t.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,11 @@ test( "referenceDefn", function(t, md) {
420420
t.equivalent(md.tree[ 1 ].references, { "id": { href: "example.com" } }, "reference extracted");
421421
t.equivalent(next, [ mk_block("para") ], "paragraph put back into blocks");
422422

423+
// Check empty tags and non-tags are ignored
424+
md.tree = ["markdown"];
425+
t.type(rd.call( md, mk_block("[]: http://example.com"), []), "undefined", "no empty ref name");
426+
t.type(rd.call( md, mk_block("[b]label[/b]: description"), []), "undefined", "no brackets in ref name");
427+
423428
});
424429

425430
test( "inline_br", function(t, md) {
@@ -533,6 +538,10 @@ test( "inline_link", function(t, md) {
533538
],
534539
"ref link II" );
535540
/* jshint indent: 2 */
541+
542+
t.equivalent( md.processInline( "[]: text" ),
543+
[ "[]: text" ],
544+
"no empty links" );
536545
});
537546

538547
test( "inline_autolink", function(t, md) {

0 commit comments

Comments
 (0)