@@ -139,13 +139,7 @@ function compiler(options) {
139
139
settings . mdastExtensions || [ ]
140
140
)
141
141
142
- var flowCodeInside
143
- var setextHeadingSlurpLineEnding
144
- var characterReferenceType
145
- var expectingFirstListItemValue
146
- var atHardBreak
147
- var inReference
148
- var referenceType
142
+ var data = { }
149
143
150
144
return compile
151
145
@@ -193,7 +187,9 @@ function compiler(options) {
193
187
exit : exit ,
194
188
buffer : buffer ,
195
189
resume : resume ,
196
- sliceSerialize : events [ index ] [ 2 ] . sliceSerialize
190
+ sliceSerialize : events [ index ] [ 2 ] . sliceSerialize ,
191
+ setData : setData ,
192
+ getData : getData
197
193
} ,
198
194
events [ index ] [ 1 ]
199
195
)
@@ -340,6 +336,14 @@ function compiler(options) {
340
336
return length
341
337
}
342
338
339
+ function setData ( key , value ) {
340
+ data [ key ] = value
341
+ }
342
+
343
+ function getData ( key ) {
344
+ return data [ key ]
345
+ }
346
+
343
347
function point ( d ) {
344
348
return { line : d . line , column : d . column , offset : d . offset }
345
349
}
@@ -389,16 +393,16 @@ function compiler(options) {
389
393
//
390
394
391
395
function onenterlistordered ( ) {
392
- expectingFirstListItemValue = true
396
+ setData ( ' expectingFirstListItemValue' , true )
393
397
}
394
398
395
399
function onenterlistitemvalue ( token ) {
396
- if ( expectingFirstListItemValue ) {
400
+ if ( getData ( ' expectingFirstListItemValue' ) ) {
397
401
this . stack [ this . stack . length - 2 ] . start = parseInt (
398
402
this . sliceSerialize ( token ) ,
399
403
constants . numericBaseDecimal
400
404
)
401
- expectingFirstListItemValue = undefined
405
+ setData ( ' expectingFirstListItemValue' )
402
406
}
403
407
}
404
408
@@ -414,9 +418,9 @@ function compiler(options) {
414
418
415
419
function onexitcodefencedfence ( ) {
416
420
// Exit if this is the closing fence.
417
- if ( flowCodeInside ) return
421
+ if ( getData ( ' flowCodeInside' ) ) return
418
422
this . buffer ( )
419
- flowCodeInside = true
423
+ setData ( ' flowCodeInside' , true )
420
424
}
421
425
422
426
function onexitcodefenced ( ) {
@@ -425,7 +429,7 @@ function compiler(options) {
425
429
/ ^ ( \r ? \n | \r ) | ( \r ? \n | \r ) $ / g,
426
430
''
427
431
)
428
- flowCodeInside = undefined
432
+ setData ( ' flowCodeInside' )
429
433
}
430
434
431
435
function onexitcodeindented ( ) {
@@ -461,7 +465,7 @@ function compiler(options) {
461
465
}
462
466
463
467
function onexitsetextheadingtext ( ) {
464
- setextHeadingSlurpLineEnding = true
468
+ setData ( ' setextHeadingSlurpLineEnding' , true )
465
469
}
466
470
467
471
function onexitsetextheadinglinesequence ( token ) {
@@ -470,7 +474,7 @@ function compiler(options) {
470
474
}
471
475
472
476
function onexitsetextheading ( ) {
473
- setextHeadingSlurpLineEnding = undefined
477
+ setData ( ' setextHeadingSlurpLineEnding' )
474
478
}
475
479
476
480
function onenterdata ( token ) {
@@ -497,15 +501,15 @@ function compiler(options) {
497
501
var context = this . stack [ this . stack . length - 1 ]
498
502
499
503
// If we’re at a hard break, include the line ending in there.
500
- if ( atHardBreak ) {
504
+ if ( getData ( ' atHardBreak' ) ) {
501
505
context . children [ context . children . length - 1 ] . position . end = point (
502
506
token . end
503
507
)
504
- atHardBreak = undefined
508
+ setData ( ' atHardBreak' )
505
509
return
506
510
}
507
511
508
- if ( setextHeadingSlurpLineEnding ) {
512
+ if ( getData ( ' setextHeadingSlurpLineEnding' ) ) {
509
513
return
510
514
}
511
515
@@ -516,7 +520,7 @@ function compiler(options) {
516
520
}
517
521
518
522
function onexithardbreak ( ) {
519
- atHardBreak = true
523
+ setData ( ' atHardBreak' , true )
520
524
}
521
525
522
526
function onexithtmlflow ( ) {
@@ -542,9 +546,9 @@ function compiler(options) {
542
546
var context = this . stack [ this . stack . length - 1 ]
543
547
544
548
// To do: clean.
545
- if ( inReference ) {
549
+ if ( getData ( ' inReference' ) ) {
546
550
context . type += 'Reference'
547
- context . referenceType = referenceType || 'shortcut'
551
+ context . referenceType = getData ( ' referenceType' ) || 'shortcut'
548
552
delete context . url
549
553
delete context . title
550
554
} else {
@@ -553,16 +557,16 @@ function compiler(options) {
553
557
delete context . referenceType
554
558
}
555
559
556
- referenceType = undefined
560
+ setData ( ' referenceType' )
557
561
}
558
562
559
563
function onexitimage ( ) {
560
564
var context = this . stack [ this . stack . length - 1 ]
561
565
562
566
// To do: clean.
563
- if ( inReference ) {
567
+ if ( getData ( ' inReference' ) ) {
564
568
context . type += 'Reference'
565
- context . referenceType = referenceType || 'shortcut'
569
+ context . referenceType = getData ( ' referenceType' ) || 'shortcut'
566
570
delete context . url
567
571
delete context . title
568
572
} else {
@@ -571,7 +575,7 @@ function compiler(options) {
571
575
delete context . referenceType
572
576
}
573
577
574
- referenceType = undefined
578
+ setData ( ' referenceType' )
575
579
}
576
580
577
581
function onexitlabeltext ( token ) {
@@ -589,7 +593,7 @@ function compiler(options) {
589
593
var data
590
594
591
595
// Assume a reference.
592
- inReference = true
596
+ setData ( ' inReference' , true )
593
597
594
598
// If we’re in a fragment, we’re in an image and buffering.
595
599
if ( this . stack [ this . stack . length - 1 ] . type === 'fragment' ) {
@@ -609,11 +613,11 @@ function compiler(options) {
609
613
}
610
614
611
615
function onexitresource ( ) {
612
- inReference = undefined
616
+ setData ( ' inReference' )
613
617
}
614
618
615
619
function onenterreference ( ) {
616
- referenceType = 'collapsed'
620
+ setData ( ' referenceType' , 'collapsed' )
617
621
}
618
622
619
623
function onexitreferencestring ( token ) {
@@ -622,30 +626,31 @@ function compiler(options) {
622
626
this . stack [ this . stack . length - 1 ] . identifier = normalizeIdentifier (
623
627
this . sliceSerialize ( token )
624
628
) . toLowerCase ( )
625
- referenceType = 'full'
629
+ setData ( ' referenceType' , 'full' )
626
630
}
627
631
628
632
function onexitcharacterreferencemarker ( token ) {
629
- characterReferenceType = token . type
633
+ setData ( ' characterReferenceType' , token . type )
630
634
}
631
635
632
636
function onexitcharacterreferencevalue ( token ) {
633
637
var data = this . sliceSerialize ( token )
638
+ var type = getData ( 'characterReferenceType' )
634
639
var value
635
640
636
- if ( characterReferenceType ) {
641
+ if ( type ) {
637
642
value = safeFromInt (
638
643
data ,
639
- characterReferenceType === types . characterReferenceMarkerNumeric
644
+ type === types . characterReferenceMarkerNumeric
640
645
? constants . numericBaseDecimal
641
646
: constants . numericBaseHexadecimal
642
647
)
648
+ setData ( 'characterReferenceType' )
643
649
} else {
644
650
value = decode ( data )
645
651
}
646
652
647
653
this . stack [ this . stack . length - 1 ] . value += value
648
- characterReferenceType = undefined
649
654
}
650
655
651
656
function onexitautolinkprotocol ( token ) {
0 commit comments