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.
46 lines
1.1 KiB
46 lines
1.1 KiB
module.exports = definition |
|
|
|
var association = require('../util/association') |
|
var checkQuote = require('../util/check-quote') |
|
var safe = require('../util/safe') |
|
|
|
function definition(node, _, context) { |
|
var marker = checkQuote(context) |
|
var suffix = marker === '"' ? 'Quote' : 'Apostrophe' |
|
var exit = context.enter('definition') |
|
var subexit = context.enter('label') |
|
var value = |
|
'[' + safe(context, association(node), {before: '[', after: ']'}) + ']: ' |
|
|
|
subexit() |
|
|
|
if ( |
|
// If there’s no url, or… |
|
!node.url || |
|
// If there’s whitespace, enclosed is prettier. |
|
/[ \t\r\n]/.test(node.url) |
|
) { |
|
subexit = context.enter('destinationLiteral') |
|
value += '<' + safe(context, node.url, {before: '<', after: '>'}) + '>' |
|
} else { |
|
// No whitespace, raw is prettier. |
|
subexit = context.enter('destinationRaw') |
|
value += safe(context, node.url, {before: ' ', after: ' '}) |
|
} |
|
|
|
subexit() |
|
|
|
if (node.title) { |
|
subexit = context.enter('title' + suffix) |
|
value += |
|
' ' + |
|
marker + |
|
safe(context, node.title, {before: marker, after: marker}) + |
|
marker |
|
subexit() |
|
} |
|
|
|
exit() |
|
|
|
return value |
|
}
|
|
|