6
6
import { association } from '../util/association.js'
7
7
import { checkQuote } from '../util/check-quote.js'
8
8
import { safe } from '../util/safe.js'
9
+ import { track } from '../util/track.js'
9
10
10
11
/**
11
12
* @type {Handle }
12
13
* @param {Definition } node
13
14
*/
14
- export function definition ( node , _ , context ) {
15
- const marker = checkQuote ( context )
16
- const suffix = marker === '"' ? 'Quote' : 'Apostrophe'
15
+ export function definition ( node , _ , context , safeOptions ) {
16
+ const quote = checkQuote ( context )
17
+ const suffix = quote === '"' ? 'Quote' : 'Apostrophe'
17
18
const exit = context . enter ( 'definition' )
18
19
let subexit = context . enter ( 'label' )
19
- let value =
20
- '[' + safe ( context , association ( node ) , { before : '[' , after : ']' } ) + ']: '
20
+ const tracker = track ( safeOptions )
21
+ let value = tracker . move ( '[' )
22
+ value += tracker . move (
23
+ safe ( context , association ( node ) , {
24
+ before : value ,
25
+ after : ']' ,
26
+ ...tracker . current ( )
27
+ } )
28
+ )
29
+ value += tracker . move ( ']: ' )
21
30
22
31
subexit ( )
23
32
@@ -28,22 +37,36 @@ export function definition(node, _, context) {
28
37
/ [ \0 - \u007F ] / . test ( node . url )
29
38
) {
30
39
subexit = context . enter ( 'destinationLiteral' )
31
- value += '<' + safe ( context , node . url , { before : '<' , after : '>' } ) + '>'
40
+ value += tracker . move ( '<' )
41
+ value += tracker . move (
42
+ safe ( context , node . url , { before : value , after : '>' , ...tracker . current ( ) } )
43
+ )
44
+ value += tracker . move ( '>' )
32
45
} else {
33
46
// No whitespace, raw is prettier.
34
47
subexit = context . enter ( 'destinationRaw' )
35
- value += safe ( context , node . url , { before : ' ' , after : ' ' } )
48
+ value += tracker . move (
49
+ safe ( context , node . url , {
50
+ before : value ,
51
+ after : node . title ? ' ' : '\n' ,
52
+ ...tracker . current ( )
53
+ } )
54
+ )
36
55
}
37
56
38
57
subexit ( )
39
58
40
59
if ( node . title ) {
41
60
subexit = context . enter ( 'title' + suffix )
42
- value +=
43
- ' ' +
44
- marker +
45
- safe ( context , node . title , { before : marker , after : marker } ) +
46
- marker
61
+ value += tracker . move ( ' ' + quote )
62
+ value += tracker . move (
63
+ safe ( context , node . title , {
64
+ before : value ,
65
+ after : quote ,
66
+ ...tracker . current ( )
67
+ } )
68
+ )
69
+ value += tracker . move ( quote )
47
70
subexit ( )
48
71
}
49
72
0 commit comments