You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
996 B
38 lines
996 B
module.exports = linkReference |
|
linkReference.peek = linkReferencePeek |
|
|
|
var association = require('../util/association') |
|
var phrasing = require('../util/container-phrasing') |
|
var safe = require('../util/safe') |
|
|
|
function linkReference(node, _, context) { |
|
var type = node.referenceType |
|
var exit = context.enter('linkReference') |
|
var subexit = context.enter('label') |
|
var text = phrasing(node, context, {before: '[', after: ']'}) |
|
var value = '[' + text + ']' |
|
var reference |
|
var stack |
|
|
|
subexit() |
|
// Hide the fact that we’re in phrasing, because escapes don’t work. |
|
stack = context.stack |
|
context.stack = [] |
|
subexit = context.enter('reference') |
|
reference = safe(context, association(node), {before: '[', after: ']'}) |
|
subexit() |
|
context.stack = stack |
|
exit() |
|
|
|
if (type === 'full' || !text || text !== reference) { |
|
value += '[' + reference + ']' |
|
} else if (type !== 'shortcut') { |
|
value += '[]' |
|
} |
|
|
|
return value |
|
} |
|
|
|
function linkReferencePeek() { |
|
return '[' |
|
}
|
|
|