links-notation 0.11.0 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -171,58 +171,61 @@ function peg$parse(input, options) {
171
171
  const peg$c4 = "'";
172
172
  const peg$c5 = " ";
173
173
 
174
- const peg$r0 = /^[^"]/;
175
- const peg$r1 = /^[^']/;
176
- const peg$r2 = /^[\r\n]/;
177
- const peg$r3 = /^[ \t]/;
174
+ const peg$r0 = /^[ \t]/;
175
+ const peg$r1 = /^[\r\n]/;
176
+ const peg$r2 = /^[^"]/;
177
+ const peg$r3 = /^[^']/;
178
178
  const peg$r4 = /^[ \t\n\r]/;
179
179
  const peg$r5 = /^[^ \t\n\r(:)]/;
180
180
 
181
- const peg$e0 = peg$literalExpectation(":", false);
182
- const peg$e1 = peg$literalExpectation("(", false);
183
- const peg$e2 = peg$literalExpectation(")", false);
184
- const peg$e3 = peg$literalExpectation("\"", false);
185
- const peg$e4 = peg$classExpectation(["\""], true, false, false);
186
- const peg$e5 = peg$literalExpectation("'", false);
187
- const peg$e6 = peg$classExpectation(["'"], true, false, false);
188
- const peg$e7 = peg$literalExpectation(" ", false);
189
- const peg$e8 = peg$classExpectation(["\r", "\n"], false, false, false);
190
- const peg$e9 = peg$anyExpectation();
191
- const peg$e10 = peg$classExpectation([" ", "\t"], false, false, false);
181
+ const peg$e0 = peg$classExpectation([" ", "\t"], false, false, false);
182
+ const peg$e1 = peg$classExpectation(["\r", "\n"], false, false, false);
183
+ const peg$e2 = peg$literalExpectation(":", false);
184
+ const peg$e3 = peg$literalExpectation("(", false);
185
+ const peg$e4 = peg$literalExpectation(")", false);
186
+ const peg$e5 = peg$literalExpectation("\"", false);
187
+ const peg$e6 = peg$classExpectation(["\""], true, false, false);
188
+ const peg$e7 = peg$literalExpectation("'", false);
189
+ const peg$e8 = peg$classExpectation(["'"], true, false, false);
190
+ const peg$e9 = peg$literalExpectation(" ", false);
191
+ const peg$e10 = peg$anyExpectation();
192
192
  const peg$e11 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false, false);
193
193
  const peg$e12 = peg$classExpectation([" ", "\t", "\n", "\r", "(", ":", ")"], true, false, false);
194
194
 
195
- function peg$f0(links) { return links; }
196
- function peg$f1() { return []; }
197
- function peg$f2(fl, list) { popIndentation(); return [fl].concat(list || []); }
198
- function peg$f3(l) { return l; }
199
- function peg$f4(l) { return l; }
200
- function peg$f5(e, l) {
195
+ function peg$f0() { indentationStack = [0]; baseIndentation = null; return true; }
196
+ function peg$f1(links) { return links; }
197
+ function peg$f2() { indentationStack = [0]; baseIndentation = null; return true; }
198
+ function peg$f3() { return []; }
199
+ function peg$f4(fl, list) { popIndentation(); return [fl].concat(list || []); }
200
+ function peg$f5(l) { return l; }
201
+ function peg$f6(l) { return l; }
202
+ function peg$f7(e, l) {
201
203
  return { id: e.id, values: e.values, children: l };
202
204
  }
203
- function peg$f6(e) { return e; }
204
- function peg$f7(l) { return l; }
205
- function peg$f8(i) { return { id: i }; }
206
- function peg$f9(ml) { return ml; }
207
- function peg$f10(il) { return il; }
208
- function peg$f11(sl) { return sl; }
209
- function peg$f12(fl) { return fl; }
210
- function peg$f13(vl) { return vl; }
211
- function peg$f14(value) { return value; }
212
- function peg$f15(list) { return list; }
205
+ function peg$f8(e) { return e; }
206
+ function peg$f9(l) { return l; }
207
+ function peg$f10(i) { return { id: i }; }
208
+ function peg$f11(ml) { return ml; }
209
+ function peg$f12(il) { return il; }
210
+ function peg$f13(sl) { return sl; }
211
+ function peg$f14(fl) { return fl; }
212
+ function peg$f15(vl) { return vl; }
213
213
  function peg$f16(value) { return value; }
214
214
  function peg$f17(list) { return list; }
215
- function peg$f18(id, v) { return { id: id, values: v }; }
216
- function peg$f19(id, v) { return { id: id, values: v }; }
217
- function peg$f20(v) { return { values: v }; }
218
- function peg$f21(v) { return { values: v }; }
219
- function peg$f22(id) { return { id: id, values: [] }; }
220
- function peg$f23(chars) { return chars.join(''); }
221
- function peg$f24(r) { return r.join(''); }
222
- function peg$f25(r) { return r.join(''); }
223
- function peg$f26(spaces) { return spaces.length > getCurrentIndentation(); }
224
- function peg$f27(spaces) { pushIndentation(spaces); }
225
- function peg$f28(spaces) { return checkIndentation(spaces); }
215
+ function peg$f18(value) { return value; }
216
+ function peg$f19(list) { return list; }
217
+ function peg$f20(id, v) { return { id: id, values: v }; }
218
+ function peg$f21(id, v) { return { id: id, values: v }; }
219
+ function peg$f22(v) { return { values: v }; }
220
+ function peg$f23(v) { return { values: v }; }
221
+ function peg$f24(id) { return { id: id, values: [] }; }
222
+ function peg$f25(chars) { return chars.join(''); }
223
+ function peg$f26(r) { return r.join(''); }
224
+ function peg$f27(r) { return r.join(''); }
225
+ function peg$f28(spaces) { setBaseIndentation(spaces); }
226
+ function peg$f29(spaces) { return normalizeIndentation(spaces) > getCurrentIndentation(); }
227
+ function peg$f30(spaces) { pushIndentation(spaces); }
228
+ function peg$f31(spaces) { return checkIndentation(spaces); }
226
229
  let peg$currPos = options.peg$currPos | 0;
227
230
  let peg$savedPos = peg$currPos;
228
231
  const peg$posDetailsCache = [{ line: 1, column: 1 }];
@@ -394,16 +397,29 @@ function peg$parse(input, options) {
394
397
  }
395
398
 
396
399
  function peg$parsedocument() {
397
- let s0, s1, s2, s3;
400
+ let s0, s1, s2, s3, s4, s5;
398
401
 
399
402
  s0 = peg$currPos;
400
- s1 = peg$parse_();
401
- s2 = peg$parselinks();
402
- if (s2 !== peg$FAILED) {
403
- s3 = peg$parseeof();
403
+ peg$savedPos = peg$currPos;
404
+ s1 = peg$f0();
405
+ if (s1) {
406
+ s1 = undefined;
407
+ } else {
408
+ s1 = peg$FAILED;
409
+ }
410
+ if (s1 !== peg$FAILED) {
411
+ s2 = peg$parseskipEmptyLines();
412
+ s3 = peg$parselinks();
404
413
  if (s3 !== peg$FAILED) {
405
- peg$savedPos = s0;
406
- s0 = peg$f0(s2);
414
+ s4 = peg$parse_();
415
+ s5 = peg$parseeof();
416
+ if (s5 !== peg$FAILED) {
417
+ peg$savedPos = s0;
418
+ s0 = peg$f1(s3);
419
+ } else {
420
+ peg$currPos = s0;
421
+ s0 = peg$FAILED;
422
+ }
407
423
  } else {
408
424
  peg$currPos = s0;
409
425
  s0 = peg$FAILED;
@@ -414,11 +430,23 @@ function peg$parse(input, options) {
414
430
  }
415
431
  if (s0 === peg$FAILED) {
416
432
  s0 = peg$currPos;
417
- s1 = peg$parse_();
418
- s2 = peg$parseeof();
419
- if (s2 !== peg$FAILED) {
420
- peg$savedPos = s0;
421
- s0 = peg$f1();
433
+ peg$savedPos = peg$currPos;
434
+ s1 = peg$f2();
435
+ if (s1) {
436
+ s1 = undefined;
437
+ } else {
438
+ s1 = peg$FAILED;
439
+ }
440
+ if (s1 !== peg$FAILED) {
441
+ s2 = peg$parse_();
442
+ s3 = peg$parseeof();
443
+ if (s3 !== peg$FAILED) {
444
+ peg$savedPos = s0;
445
+ s0 = peg$f3();
446
+ } else {
447
+ peg$currPos = s0;
448
+ s0 = peg$FAILED;
449
+ }
422
450
  } else {
423
451
  peg$currPos = s0;
424
452
  s0 = peg$FAILED;
@@ -428,6 +456,83 @@ function peg$parse(input, options) {
428
456
  return s0;
429
457
  }
430
458
 
459
+ function peg$parseskipEmptyLines() {
460
+ let s0, s1, s2, s3;
461
+
462
+ s0 = [];
463
+ s1 = peg$currPos;
464
+ s2 = [];
465
+ s3 = input.charAt(peg$currPos);
466
+ if (peg$r0.test(s3)) {
467
+ peg$currPos++;
468
+ } else {
469
+ s3 = peg$FAILED;
470
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
471
+ }
472
+ while (s3 !== peg$FAILED) {
473
+ s2.push(s3);
474
+ s3 = input.charAt(peg$currPos);
475
+ if (peg$r0.test(s3)) {
476
+ peg$currPos++;
477
+ } else {
478
+ s3 = peg$FAILED;
479
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
480
+ }
481
+ }
482
+ s3 = input.charAt(peg$currPos);
483
+ if (peg$r1.test(s3)) {
484
+ peg$currPos++;
485
+ } else {
486
+ s3 = peg$FAILED;
487
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
488
+ }
489
+ if (s3 !== peg$FAILED) {
490
+ s2 = [s2, s3];
491
+ s1 = s2;
492
+ } else {
493
+ peg$currPos = s1;
494
+ s1 = peg$FAILED;
495
+ }
496
+ while (s1 !== peg$FAILED) {
497
+ s0.push(s1);
498
+ s1 = peg$currPos;
499
+ s2 = [];
500
+ s3 = input.charAt(peg$currPos);
501
+ if (peg$r0.test(s3)) {
502
+ peg$currPos++;
503
+ } else {
504
+ s3 = peg$FAILED;
505
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
506
+ }
507
+ while (s3 !== peg$FAILED) {
508
+ s2.push(s3);
509
+ s3 = input.charAt(peg$currPos);
510
+ if (peg$r0.test(s3)) {
511
+ peg$currPos++;
512
+ } else {
513
+ s3 = peg$FAILED;
514
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
515
+ }
516
+ }
517
+ s3 = input.charAt(peg$currPos);
518
+ if (peg$r1.test(s3)) {
519
+ peg$currPos++;
520
+ } else {
521
+ s3 = peg$FAILED;
522
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
523
+ }
524
+ if (s3 !== peg$FAILED) {
525
+ s2 = [s2, s3];
526
+ s1 = s2;
527
+ } else {
528
+ peg$currPos = s1;
529
+ s1 = peg$FAILED;
530
+ }
531
+ }
532
+
533
+ return s0;
534
+ }
535
+
431
536
  function peg$parselinks() {
432
537
  let s0, s1, s2, s3;
433
538
 
@@ -441,7 +546,7 @@ function peg$parse(input, options) {
441
546
  s3 = peg$parseline();
442
547
  }
443
548
  peg$savedPos = s0;
444
- s0 = peg$f2(s1, s2);
549
+ s0 = peg$f4(s1, s2);
445
550
  } else {
446
551
  peg$currPos = s0;
447
552
  s0 = peg$FAILED;
@@ -451,15 +556,18 @@ function peg$parse(input, options) {
451
556
  }
452
557
 
453
558
  function peg$parsefirstLine() {
454
- let s0, s1;
559
+ let s0, s1, s2;
455
560
 
456
561
  s0 = peg$currPos;
457
- s1 = peg$parseelement();
458
- if (s1 !== peg$FAILED) {
562
+ s1 = peg$parseSET_BASE_INDENTATION();
563
+ s2 = peg$parseelement();
564
+ if (s2 !== peg$FAILED) {
459
565
  peg$savedPos = s0;
460
- s1 = peg$f3(s1);
566
+ s0 = peg$f5(s2);
567
+ } else {
568
+ peg$currPos = s0;
569
+ s0 = peg$FAILED;
461
570
  }
462
- s0 = s1;
463
571
 
464
572
  return s0;
465
573
  }
@@ -473,7 +581,7 @@ function peg$parse(input, options) {
473
581
  s2 = peg$parseelement();
474
582
  if (s2 !== peg$FAILED) {
475
583
  peg$savedPos = s0;
476
- s0 = peg$f4(s2);
584
+ s0 = peg$f6(s2);
477
585
  } else {
478
586
  peg$currPos = s0;
479
587
  s0 = peg$FAILED;
@@ -497,7 +605,7 @@ function peg$parse(input, options) {
497
605
  s3 = peg$parselinks();
498
606
  if (s3 !== peg$FAILED) {
499
607
  peg$savedPos = s0;
500
- s0 = peg$f5(s1, s3);
608
+ s0 = peg$f7(s1, s3);
501
609
  } else {
502
610
  peg$currPos = s0;
503
611
  s0 = peg$FAILED;
@@ -515,7 +623,7 @@ function peg$parse(input, options) {
515
623
  s1 = peg$parseanyLink();
516
624
  if (s1 !== peg$FAILED) {
517
625
  peg$savedPos = s0;
518
- s1 = peg$f6(s1);
626
+ s1 = peg$f8(s1);
519
627
  }
520
628
  s0 = s1;
521
629
  }
@@ -530,7 +638,7 @@ function peg$parse(input, options) {
530
638
  s1 = peg$parsemultiLineAnyLink();
531
639
  if (s1 !== peg$FAILED) {
532
640
  peg$savedPos = s0;
533
- s1 = peg$f7(s1);
641
+ s1 = peg$f9(s1);
534
642
  }
535
643
  s0 = s1;
536
644
  if (s0 === peg$FAILED) {
@@ -538,7 +646,7 @@ function peg$parse(input, options) {
538
646
  s1 = peg$parsereference();
539
647
  if (s1 !== peg$FAILED) {
540
648
  peg$savedPos = s0;
541
- s1 = peg$f8(s1);
649
+ s1 = peg$f10(s1);
542
650
  }
543
651
  s0 = s1;
544
652
  }
@@ -555,7 +663,7 @@ function peg$parse(input, options) {
555
663
  s2 = peg$parseeol();
556
664
  if (s2 !== peg$FAILED) {
557
665
  peg$savedPos = s0;
558
- s0 = peg$f9(s1);
666
+ s0 = peg$f11(s1);
559
667
  } else {
560
668
  peg$currPos = s0;
561
669
  s0 = peg$FAILED;
@@ -569,7 +677,7 @@ function peg$parse(input, options) {
569
677
  s1 = peg$parseindentedIdLink();
570
678
  if (s1 !== peg$FAILED) {
571
679
  peg$savedPos = s0;
572
- s1 = peg$f10(s1);
680
+ s1 = peg$f12(s1);
573
681
  }
574
682
  s0 = s1;
575
683
  if (s0 === peg$FAILED) {
@@ -577,7 +685,7 @@ function peg$parse(input, options) {
577
685
  s1 = peg$parsesingleLineAnyLink();
578
686
  if (s1 !== peg$FAILED) {
579
687
  peg$savedPos = s0;
580
- s1 = peg$f11(s1);
688
+ s1 = peg$f13(s1);
581
689
  }
582
690
  s0 = s1;
583
691
  }
@@ -606,7 +714,7 @@ function peg$parse(input, options) {
606
714
  s2 = peg$parseeol();
607
715
  if (s2 !== peg$FAILED) {
608
716
  peg$savedPos = s0;
609
- s0 = peg$f12(s1);
717
+ s0 = peg$f14(s1);
610
718
  } else {
611
719
  peg$currPos = s0;
612
720
  s0 = peg$FAILED;
@@ -622,7 +730,7 @@ function peg$parse(input, options) {
622
730
  s2 = peg$parseeol();
623
731
  if (s2 !== peg$FAILED) {
624
732
  peg$savedPos = s0;
625
- s0 = peg$f13(s1);
733
+ s0 = peg$f15(s1);
626
734
  } else {
627
735
  peg$currPos = s0;
628
736
  s0 = peg$FAILED;
@@ -644,7 +752,7 @@ function peg$parse(input, options) {
644
752
  if (s1 !== peg$FAILED) {
645
753
  s2 = peg$parse_();
646
754
  peg$savedPos = s0;
647
- s0 = peg$f14(s1);
755
+ s0 = peg$f16(s1);
648
756
  } else {
649
757
  peg$currPos = s0;
650
758
  s0 = peg$FAILED;
@@ -665,7 +773,7 @@ function peg$parse(input, options) {
665
773
  s3 = peg$parsemultiLineValueAndWhitespace();
666
774
  }
667
775
  peg$savedPos = s0;
668
- s0 = peg$f15(s2);
776
+ s0 = peg$f17(s2);
669
777
 
670
778
  return s0;
671
779
  }
@@ -678,7 +786,7 @@ function peg$parse(input, options) {
678
786
  s2 = peg$parsereferenceOrLink();
679
787
  if (s2 !== peg$FAILED) {
680
788
  peg$savedPos = s0;
681
- s0 = peg$f16(s2);
789
+ s0 = peg$f18(s2);
682
790
  } else {
683
791
  peg$currPos = s0;
684
792
  s0 = peg$FAILED;
@@ -703,7 +811,7 @@ function peg$parse(input, options) {
703
811
  }
704
812
  if (s1 !== peg$FAILED) {
705
813
  peg$savedPos = s0;
706
- s1 = peg$f17(s1);
814
+ s1 = peg$f19(s1);
707
815
  }
708
816
  s0 = s1;
709
817
 
@@ -723,13 +831,13 @@ function peg$parse(input, options) {
723
831
  peg$currPos++;
724
832
  } else {
725
833
  s4 = peg$FAILED;
726
- if (peg$silentFails === 0) { peg$fail(peg$e0); }
834
+ if (peg$silentFails === 0) { peg$fail(peg$e2); }
727
835
  }
728
836
  if (s4 !== peg$FAILED) {
729
837
  s5 = peg$parsesingleLineValues();
730
838
  if (s5 !== peg$FAILED) {
731
839
  peg$savedPos = s0;
732
- s0 = peg$f18(s2, s5);
840
+ s0 = peg$f20(s2, s5);
733
841
  } else {
734
842
  peg$currPos = s0;
735
843
  s0 = peg$FAILED;
@@ -755,7 +863,7 @@ function peg$parse(input, options) {
755
863
  peg$currPos++;
756
864
  } else {
757
865
  s1 = peg$FAILED;
758
- if (peg$silentFails === 0) { peg$fail(peg$e1); }
866
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
759
867
  }
760
868
  if (s1 !== peg$FAILED) {
761
869
  s2 = peg$parse_();
@@ -767,7 +875,7 @@ function peg$parse(input, options) {
767
875
  peg$currPos++;
768
876
  } else {
769
877
  s5 = peg$FAILED;
770
- if (peg$silentFails === 0) { peg$fail(peg$e0); }
878
+ if (peg$silentFails === 0) { peg$fail(peg$e2); }
771
879
  }
772
880
  if (s5 !== peg$FAILED) {
773
881
  s6 = peg$parsemultiLineValues();
@@ -777,11 +885,11 @@ function peg$parse(input, options) {
777
885
  peg$currPos++;
778
886
  } else {
779
887
  s8 = peg$FAILED;
780
- if (peg$silentFails === 0) { peg$fail(peg$e2); }
888
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
781
889
  }
782
890
  if (s8 !== peg$FAILED) {
783
891
  peg$savedPos = s0;
784
- s0 = peg$f19(s3, s6);
892
+ s0 = peg$f21(s3, s6);
785
893
  } else {
786
894
  peg$currPos = s0;
787
895
  s0 = peg$FAILED;
@@ -809,7 +917,7 @@ function peg$parse(input, options) {
809
917
  s1 = peg$parsesingleLineValues();
810
918
  if (s1 !== peg$FAILED) {
811
919
  peg$savedPos = s0;
812
- s1 = peg$f20(s1);
920
+ s1 = peg$f22(s1);
813
921
  }
814
922
  s0 = s1;
815
923
 
@@ -825,7 +933,7 @@ function peg$parse(input, options) {
825
933
  peg$currPos++;
826
934
  } else {
827
935
  s1 = peg$FAILED;
828
- if (peg$silentFails === 0) { peg$fail(peg$e1); }
936
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
829
937
  }
830
938
  if (s1 !== peg$FAILED) {
831
939
  s2 = peg$parsemultiLineValues();
@@ -835,11 +943,11 @@ function peg$parse(input, options) {
835
943
  peg$currPos++;
836
944
  } else {
837
945
  s4 = peg$FAILED;
838
- if (peg$silentFails === 0) { peg$fail(peg$e2); }
946
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
839
947
  }
840
948
  if (s4 !== peg$FAILED) {
841
949
  peg$savedPos = s0;
842
- s0 = peg$f21(s2);
950
+ s0 = peg$f23(s2);
843
951
  } else {
844
952
  peg$currPos = s0;
845
953
  s0 = peg$FAILED;
@@ -864,13 +972,13 @@ function peg$parse(input, options) {
864
972
  peg$currPos++;
865
973
  } else {
866
974
  s3 = peg$FAILED;
867
- if (peg$silentFails === 0) { peg$fail(peg$e0); }
975
+ if (peg$silentFails === 0) { peg$fail(peg$e2); }
868
976
  }
869
977
  if (s3 !== peg$FAILED) {
870
978
  s4 = peg$parseeol();
871
979
  if (s4 !== peg$FAILED) {
872
980
  peg$savedPos = s0;
873
- s0 = peg$f22(s1);
981
+ s0 = peg$f24(s1);
874
982
  } else {
875
983
  peg$currPos = s0;
876
984
  s0 = peg$FAILED;
@@ -917,7 +1025,7 @@ function peg$parse(input, options) {
917
1025
  }
918
1026
  if (s1 !== peg$FAILED) {
919
1027
  peg$savedPos = s0;
920
- s1 = peg$f23(s1);
1028
+ s1 = peg$f25(s1);
921
1029
  }
922
1030
  s0 = s1;
923
1031
 
@@ -933,26 +1041,26 @@ function peg$parse(input, options) {
933
1041
  peg$currPos++;
934
1042
  } else {
935
1043
  s1 = peg$FAILED;
936
- if (peg$silentFails === 0) { peg$fail(peg$e3); }
1044
+ if (peg$silentFails === 0) { peg$fail(peg$e5); }
937
1045
  }
938
1046
  if (s1 !== peg$FAILED) {
939
1047
  s2 = [];
940
1048
  s3 = input.charAt(peg$currPos);
941
- if (peg$r0.test(s3)) {
1049
+ if (peg$r2.test(s3)) {
942
1050
  peg$currPos++;
943
1051
  } else {
944
1052
  s3 = peg$FAILED;
945
- if (peg$silentFails === 0) { peg$fail(peg$e4); }
1053
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
946
1054
  }
947
1055
  if (s3 !== peg$FAILED) {
948
1056
  while (s3 !== peg$FAILED) {
949
1057
  s2.push(s3);
950
1058
  s3 = input.charAt(peg$currPos);
951
- if (peg$r0.test(s3)) {
1059
+ if (peg$r2.test(s3)) {
952
1060
  peg$currPos++;
953
1061
  } else {
954
1062
  s3 = peg$FAILED;
955
- if (peg$silentFails === 0) { peg$fail(peg$e4); }
1063
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
956
1064
  }
957
1065
  }
958
1066
  } else {
@@ -964,11 +1072,11 @@ function peg$parse(input, options) {
964
1072
  peg$currPos++;
965
1073
  } else {
966
1074
  s3 = peg$FAILED;
967
- if (peg$silentFails === 0) { peg$fail(peg$e3); }
1075
+ if (peg$silentFails === 0) { peg$fail(peg$e5); }
968
1076
  }
969
1077
  if (s3 !== peg$FAILED) {
970
1078
  peg$savedPos = s0;
971
- s0 = peg$f24(s2);
1079
+ s0 = peg$f26(s2);
972
1080
  } else {
973
1081
  peg$currPos = s0;
974
1082
  s0 = peg$FAILED;
@@ -994,26 +1102,26 @@ function peg$parse(input, options) {
994
1102
  peg$currPos++;
995
1103
  } else {
996
1104
  s1 = peg$FAILED;
997
- if (peg$silentFails === 0) { peg$fail(peg$e5); }
1105
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
998
1106
  }
999
1107
  if (s1 !== peg$FAILED) {
1000
1108
  s2 = [];
1001
1109
  s3 = input.charAt(peg$currPos);
1002
- if (peg$r1.test(s3)) {
1110
+ if (peg$r3.test(s3)) {
1003
1111
  peg$currPos++;
1004
1112
  } else {
1005
1113
  s3 = peg$FAILED;
1006
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
1114
+ if (peg$silentFails === 0) { peg$fail(peg$e8); }
1007
1115
  }
1008
1116
  if (s3 !== peg$FAILED) {
1009
1117
  while (s3 !== peg$FAILED) {
1010
1118
  s2.push(s3);
1011
1119
  s3 = input.charAt(peg$currPos);
1012
- if (peg$r1.test(s3)) {
1120
+ if (peg$r3.test(s3)) {
1013
1121
  peg$currPos++;
1014
1122
  } else {
1015
1123
  s3 = peg$FAILED;
1016
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
1124
+ if (peg$silentFails === 0) { peg$fail(peg$e8); }
1017
1125
  }
1018
1126
  }
1019
1127
  } else {
@@ -1025,11 +1133,11 @@ function peg$parse(input, options) {
1025
1133
  peg$currPos++;
1026
1134
  } else {
1027
1135
  s3 = peg$FAILED;
1028
- if (peg$silentFails === 0) { peg$fail(peg$e5); }
1136
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
1029
1137
  }
1030
1138
  if (s3 !== peg$FAILED) {
1031
1139
  peg$savedPos = s0;
1032
- s0 = peg$f25(s2);
1140
+ s0 = peg$f27(s2);
1033
1141
  } else {
1034
1142
  peg$currPos = s0;
1035
1143
  s0 = peg$FAILED;
@@ -1046,6 +1154,35 @@ function peg$parse(input, options) {
1046
1154
  return s0;
1047
1155
  }
1048
1156
 
1157
+ function peg$parseSET_BASE_INDENTATION() {
1158
+ let s0, s1, s2;
1159
+
1160
+ s0 = peg$currPos;
1161
+ s1 = [];
1162
+ if (input.charCodeAt(peg$currPos) === 32) {
1163
+ s2 = peg$c5;
1164
+ peg$currPos++;
1165
+ } else {
1166
+ s2 = peg$FAILED;
1167
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1168
+ }
1169
+ while (s2 !== peg$FAILED) {
1170
+ s1.push(s2);
1171
+ if (input.charCodeAt(peg$currPos) === 32) {
1172
+ s2 = peg$c5;
1173
+ peg$currPos++;
1174
+ } else {
1175
+ s2 = peg$FAILED;
1176
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1177
+ }
1178
+ }
1179
+ peg$savedPos = s0;
1180
+ s1 = peg$f28(s1);
1181
+ s0 = s1;
1182
+
1183
+ return s0;
1184
+ }
1185
+
1049
1186
  function peg$parsePUSH_INDENTATION() {
1050
1187
  let s0, s1, s2;
1051
1188
 
@@ -1056,7 +1193,7 @@ function peg$parse(input, options) {
1056
1193
  peg$currPos++;
1057
1194
  } else {
1058
1195
  s2 = peg$FAILED;
1059
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
1196
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1060
1197
  }
1061
1198
  while (s2 !== peg$FAILED) {
1062
1199
  s1.push(s2);
@@ -1065,11 +1202,11 @@ function peg$parse(input, options) {
1065
1202
  peg$currPos++;
1066
1203
  } else {
1067
1204
  s2 = peg$FAILED;
1068
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
1205
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1069
1206
  }
1070
1207
  }
1071
1208
  peg$savedPos = peg$currPos;
1072
- s2 = peg$f26(s1);
1209
+ s2 = peg$f29(s1);
1073
1210
  if (s2) {
1074
1211
  s2 = undefined;
1075
1212
  } else {
@@ -1077,7 +1214,7 @@ function peg$parse(input, options) {
1077
1214
  }
1078
1215
  if (s2 !== peg$FAILED) {
1079
1216
  peg$savedPos = s0;
1080
- s0 = peg$f27(s1);
1217
+ s0 = peg$f30(s1);
1081
1218
  } else {
1082
1219
  peg$currPos = s0;
1083
1220
  s0 = peg$FAILED;
@@ -1096,7 +1233,7 @@ function peg$parse(input, options) {
1096
1233
  peg$currPos++;
1097
1234
  } else {
1098
1235
  s2 = peg$FAILED;
1099
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
1236
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1100
1237
  }
1101
1238
  while (s2 !== peg$FAILED) {
1102
1239
  s1.push(s2);
@@ -1105,11 +1242,11 @@ function peg$parse(input, options) {
1105
1242
  peg$currPos++;
1106
1243
  } else {
1107
1244
  s2 = peg$FAILED;
1108
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
1245
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1109
1246
  }
1110
1247
  }
1111
1248
  peg$savedPos = peg$currPos;
1112
- s2 = peg$f28(s1);
1249
+ s2 = peg$f31(s1);
1113
1250
  if (s2) {
1114
1251
  s2 = undefined;
1115
1252
  } else {
@@ -1133,21 +1270,21 @@ function peg$parse(input, options) {
1133
1270
  s1 = peg$parse__();
1134
1271
  s2 = [];
1135
1272
  s3 = input.charAt(peg$currPos);
1136
- if (peg$r2.test(s3)) {
1273
+ if (peg$r1.test(s3)) {
1137
1274
  peg$currPos++;
1138
1275
  } else {
1139
1276
  s3 = peg$FAILED;
1140
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
1277
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
1141
1278
  }
1142
1279
  if (s3 !== peg$FAILED) {
1143
1280
  while (s3 !== peg$FAILED) {
1144
1281
  s2.push(s3);
1145
1282
  s3 = input.charAt(peg$currPos);
1146
- if (peg$r2.test(s3)) {
1283
+ if (peg$r1.test(s3)) {
1147
1284
  peg$currPos++;
1148
1285
  } else {
1149
1286
  s3 = peg$FAILED;
1150
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
1287
+ if (peg$silentFails === 0) { peg$fail(peg$e1); }
1151
1288
  }
1152
1289
  }
1153
1290
  } else {
@@ -1177,7 +1314,7 @@ function peg$parse(input, options) {
1177
1314
  peg$currPos++;
1178
1315
  } else {
1179
1316
  s1 = peg$FAILED;
1180
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
1317
+ if (peg$silentFails === 0) { peg$fail(peg$e10); }
1181
1318
  }
1182
1319
  peg$silentFails--;
1183
1320
  if (s1 === peg$FAILED) {
@@ -1195,20 +1332,20 @@ function peg$parse(input, options) {
1195
1332
 
1196
1333
  s0 = [];
1197
1334
  s1 = input.charAt(peg$currPos);
1198
- if (peg$r3.test(s1)) {
1335
+ if (peg$r0.test(s1)) {
1199
1336
  peg$currPos++;
1200
1337
  } else {
1201
1338
  s1 = peg$FAILED;
1202
- if (peg$silentFails === 0) { peg$fail(peg$e10); }
1339
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
1203
1340
  }
1204
1341
  while (s1 !== peg$FAILED) {
1205
1342
  s0.push(s1);
1206
1343
  s1 = input.charAt(peg$currPos);
1207
- if (peg$r3.test(s1)) {
1344
+ if (peg$r0.test(s1)) {
1208
1345
  peg$currPos++;
1209
1346
  } else {
1210
1347
  s1 = peg$FAILED;
1211
- if (peg$silentFails === 0) { peg$fail(peg$e10); }
1348
+ if (peg$silentFails === 0) { peg$fail(peg$e0); }
1212
1349
  }
1213
1350
  }
1214
1351
 
@@ -1258,21 +1395,37 @@ function peg$parse(input, options) {
1258
1395
 
1259
1396
 
1260
1397
  let indentationStack = [0];
1261
-
1398
+ let baseIndentation = null;
1399
+
1400
+ function setBaseIndentation(spaces) {
1401
+ if (baseIndentation === null) {
1402
+ baseIndentation = spaces.length;
1403
+ }
1404
+ }
1405
+
1406
+ function normalizeIndentation(spaces) {
1407
+ if (baseIndentation === null) {
1408
+ return spaces.length;
1409
+ }
1410
+ return Math.max(0, spaces.length - baseIndentation);
1411
+ }
1412
+
1262
1413
  function pushIndentation(spaces) {
1263
- indentationStack.push(spaces.length);
1414
+ const normalized = normalizeIndentation(spaces);
1415
+ indentationStack.push(normalized);
1264
1416
  }
1265
-
1417
+
1266
1418
  function popIndentation() {
1267
1419
  if (indentationStack.length > 1) {
1268
1420
  indentationStack.pop();
1269
1421
  }
1270
1422
  }
1271
-
1423
+
1272
1424
  function checkIndentation(spaces) {
1273
- return spaces.length >= indentationStack[indentationStack.length - 1];
1425
+ const normalized = normalizeIndentation(spaces);
1426
+ return normalized >= indentationStack[indentationStack.length - 1];
1274
1427
  }
1275
-
1428
+
1276
1429
  function getCurrentIndentation() {
1277
1430
  return indentationStack[indentationStack.length - 1];
1278
1431
  }