diff --git a/lib/blocks.js b/lib/blocks.js index 0c6a0295..0d2a8ec1 100644 --- a/lib/blocks.js +++ b/lib/blocks.js @@ -497,14 +497,27 @@ var blockStarts = [ container.type === 'paragraph' && ((match = parser.currentLine.slice(parser.nextNonspace).match(reSetextHeadingLine)))) { parser.closeUnmatchedBlocks(); - var heading = new Node('heading', container.sourcepos); - heading.level = match[0][0] === '=' ? 1 : 2; - heading._string_content = container._string_content; - container.insertAfter(heading); - container.unlink(); - parser.tip = heading; - parser.advanceOffset(parser.currentLine.length - parser.offset, false); - return 2; + // resolve reference link definitiosn + var pos; + while (peek(container._string_content, 0) === C_OPEN_BRACKET && + (pos = + parser.inlineParser.parseReference( + container._string_content, parser.refmap))) { + container._string_content = + container._string_content.slice(pos); + } + if (container._string_content.length > 0) { + var heading = new Node('heading', container.sourcepos); + heading.level = match[0][0] === '=' ? 1 : 2; + heading._string_content = container._string_content; + container.insertAfter(heading); + container.unlink(); + parser.tip = heading; + parser.advanceOffset(parser.currentLine.length - parser.offset, false); + return 2; + } else { + return 0; + } } else { return 0; }