All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
module.exports = image
|
||
image.peek = imagePeek
|
||
|
||
var checkQuote = require('../util/check-quote')
|
||
var safe = require('../util/safe')
|
||
|
||
function image(node, _, context) {
|
||
var quote = checkQuote(context)
|
||
var suffix = quote === '"' ? 'Quote' : 'Apostrophe'
|
||
var exit = context.enter('image')
|
||
var subexit = context.enter('label')
|
||
var value = '![' + safe(context, node.alt, {before: '[', after: ']'}) + ']('
|
||
|
||
subexit()
|
||
|
||
if (
|
||
// If there’s no url but there is a title…
|
||
(!node.url && node.title) ||
|
||
// Or if there’s markdown whitespace or an eol, enclose.
|
||
/[ \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: node.title ? ' ' : ')'
|
||
})
|
||
}
|
||
|
||
subexit()
|
||
|
||
if (node.title) {
|
||
subexit = context.enter('title' + suffix)
|
||
value +=
|
||
' ' +
|
||
quote +
|
||
safe(context, node.title, {before: quote, after: quote}) +
|
||
quote
|
||
subexit()
|
||
}
|
||
|
||
value += ')'
|
||
exit()
|
||
|
||
return value
|
||
}
|
||
|
||
function imagePeek() {
|
||
return '!'
|
||
}
|