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.
package/dist/index.js CHANGED
@@ -256,114 +256,127 @@ function peg$parse(input, options) {
256
256
  const peg$c3 = '"';
257
257
  const peg$c4 = "'";
258
258
  const peg$c5 = " ";
259
- const peg$r0 = /^[^"]/;
260
- const peg$r1 = /^[^']/;
261
- const peg$r2 = /^[\r\n]/;
262
- const peg$r3 = /^[ \t]/;
259
+ const peg$r0 = /^[ \t]/;
260
+ const peg$r1 = /^[\r\n]/;
261
+ const peg$r2 = /^[^"]/;
262
+ const peg$r3 = /^[^']/;
263
263
  const peg$r4 = /^[ \t\n\r]/;
264
264
  const peg$r5 = /^[^ \t\n\r(:)]/;
265
- const peg$e0 = peg$literalExpectation(":", false);
266
- const peg$e1 = peg$literalExpectation("(", false);
267
- const peg$e2 = peg$literalExpectation(")", false);
268
- const peg$e3 = peg$literalExpectation('"', false);
269
- const peg$e4 = peg$classExpectation(['"'], true, false, false);
270
- const peg$e5 = peg$literalExpectation("'", false);
271
- const peg$e6 = peg$classExpectation(["'"], true, false, false);
272
- const peg$e7 = peg$literalExpectation(" ", false);
273
- const peg$e8 = peg$classExpectation(["\r", `
265
+ const peg$e0 = peg$classExpectation([" ", "\t"], false, false, false);
266
+ const peg$e1 = peg$classExpectation(["\r", `
274
267
  `], false, false, false);
275
- const peg$e9 = peg$anyExpectation();
276
- const peg$e10 = peg$classExpectation([" ", "\t"], false, false, false);
268
+ const peg$e2 = peg$literalExpectation(":", false);
269
+ const peg$e3 = peg$literalExpectation("(", false);
270
+ const peg$e4 = peg$literalExpectation(")", false);
271
+ const peg$e5 = peg$literalExpectation('"', false);
272
+ const peg$e6 = peg$classExpectation(['"'], true, false, false);
273
+ const peg$e7 = peg$literalExpectation("'", false);
274
+ const peg$e8 = peg$classExpectation(["'"], true, false, false);
275
+ const peg$e9 = peg$literalExpectation(" ", false);
276
+ const peg$e10 = peg$anyExpectation();
277
277
  const peg$e11 = peg$classExpectation([" ", "\t", `
278
278
  `, "\r"], false, false, false);
279
279
  const peg$e12 = peg$classExpectation([" ", "\t", `
280
280
  `, "\r", "(", ":", ")"], true, false, false);
281
- function peg$f0(links) {
281
+ function peg$f0() {
282
+ indentationStack = [0];
283
+ baseIndentation = null;
284
+ return true;
285
+ }
286
+ function peg$f1(links) {
282
287
  return links;
283
288
  }
284
- function peg$f1() {
289
+ function peg$f2() {
290
+ indentationStack = [0];
291
+ baseIndentation = null;
292
+ return true;
293
+ }
294
+ function peg$f3() {
285
295
  return [];
286
296
  }
287
- function peg$f2(fl, list) {
297
+ function peg$f4(fl, list) {
288
298
  popIndentation();
289
299
  return [fl].concat(list || []);
290
300
  }
291
- function peg$f3(l) {
301
+ function peg$f5(l) {
292
302
  return l;
293
303
  }
294
- function peg$f4(l) {
304
+ function peg$f6(l) {
295
305
  return l;
296
306
  }
297
- function peg$f5(e, l) {
307
+ function peg$f7(e, l) {
298
308
  return { id: e.id, values: e.values, children: l };
299
309
  }
300
- function peg$f6(e) {
310
+ function peg$f8(e) {
301
311
  return e;
302
312
  }
303
- function peg$f7(l) {
313
+ function peg$f9(l) {
304
314
  return l;
305
315
  }
306
- function peg$f8(i) {
316
+ function peg$f10(i) {
307
317
  return { id: i };
308
318
  }
309
- function peg$f9(ml) {
319
+ function peg$f11(ml) {
310
320
  return ml;
311
321
  }
312
- function peg$f10(il) {
322
+ function peg$f12(il) {
313
323
  return il;
314
324
  }
315
- function peg$f11(sl) {
325
+ function peg$f13(sl) {
316
326
  return sl;
317
327
  }
318
- function peg$f12(fl) {
328
+ function peg$f14(fl) {
319
329
  return fl;
320
330
  }
321
- function peg$f13(vl) {
331
+ function peg$f15(vl) {
322
332
  return vl;
323
333
  }
324
- function peg$f14(value) {
334
+ function peg$f16(value) {
325
335
  return value;
326
336
  }
327
- function peg$f15(list) {
337
+ function peg$f17(list) {
328
338
  return list;
329
339
  }
330
- function peg$f16(value) {
340
+ function peg$f18(value) {
331
341
  return value;
332
342
  }
333
- function peg$f17(list) {
343
+ function peg$f19(list) {
334
344
  return list;
335
345
  }
336
- function peg$f18(id, v) {
346
+ function peg$f20(id, v) {
337
347
  return { id, values: v };
338
348
  }
339
- function peg$f19(id, v) {
349
+ function peg$f21(id, v) {
340
350
  return { id, values: v };
341
351
  }
342
- function peg$f20(v) {
352
+ function peg$f22(v) {
343
353
  return { values: v };
344
354
  }
345
- function peg$f21(v) {
355
+ function peg$f23(v) {
346
356
  return { values: v };
347
357
  }
348
- function peg$f22(id) {
358
+ function peg$f24(id) {
349
359
  return { id, values: [] };
350
360
  }
351
- function peg$f23(chars) {
361
+ function peg$f25(chars) {
352
362
  return chars.join("");
353
363
  }
354
- function peg$f24(r) {
364
+ function peg$f26(r) {
355
365
  return r.join("");
356
366
  }
357
- function peg$f25(r) {
367
+ function peg$f27(r) {
358
368
  return r.join("");
359
369
  }
360
- function peg$f26(spaces) {
361
- return spaces.length > getCurrentIndentation();
370
+ function peg$f28(spaces) {
371
+ setBaseIndentation(spaces);
372
+ }
373
+ function peg$f29(spaces) {
374
+ return normalizeIndentation(spaces) > getCurrentIndentation();
362
375
  }
363
- function peg$f27(spaces) {
376
+ function peg$f30(spaces) {
364
377
  pushIndentation(spaces);
365
378
  }
366
- function peg$f28(spaces) {
379
+ function peg$f31(spaces) {
367
380
  return checkIndentation(spaces);
368
381
  }
369
382
  let peg$currPos = options.peg$currPos | 0;
@@ -494,15 +507,28 @@ function peg$parse(input, options) {
494
507
  return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected2, found), expected2, found, location2);
495
508
  }
496
509
  function peg$parsedocument() {
497
- let s0, s1, s2, s3;
510
+ let s0, s1, s2, s3, s4, s5;
498
511
  s0 = peg$currPos;
499
- s1 = peg$parse_();
500
- s2 = peg$parselinks();
501
- if (s2 !== peg$FAILED) {
502
- s3 = peg$parseeof();
512
+ peg$savedPos = peg$currPos;
513
+ s1 = peg$f0();
514
+ if (s1) {
515
+ s1 = undefined;
516
+ } else {
517
+ s1 = peg$FAILED;
518
+ }
519
+ if (s1 !== peg$FAILED) {
520
+ s2 = peg$parseskipEmptyLines();
521
+ s3 = peg$parselinks();
503
522
  if (s3 !== peg$FAILED) {
504
- peg$savedPos = s0;
505
- s0 = peg$f0(s2);
523
+ s4 = peg$parse_();
524
+ s5 = peg$parseeof();
525
+ if (s5 !== peg$FAILED) {
526
+ peg$savedPos = s0;
527
+ s0 = peg$f1(s3);
528
+ } else {
529
+ peg$currPos = s0;
530
+ s0 = peg$FAILED;
531
+ }
506
532
  } else {
507
533
  peg$currPos = s0;
508
534
  s0 = peg$FAILED;
@@ -513,11 +539,23 @@ function peg$parse(input, options) {
513
539
  }
514
540
  if (s0 === peg$FAILED) {
515
541
  s0 = peg$currPos;
516
- s1 = peg$parse_();
517
- s2 = peg$parseeof();
518
- if (s2 !== peg$FAILED) {
519
- peg$savedPos = s0;
520
- s0 = peg$f1();
542
+ peg$savedPos = peg$currPos;
543
+ s1 = peg$f2();
544
+ if (s1) {
545
+ s1 = undefined;
546
+ } else {
547
+ s1 = peg$FAILED;
548
+ }
549
+ if (s1 !== peg$FAILED) {
550
+ s2 = peg$parse_();
551
+ s3 = peg$parseeof();
552
+ if (s3 !== peg$FAILED) {
553
+ peg$savedPos = s0;
554
+ s0 = peg$f3();
555
+ } else {
556
+ peg$currPos = s0;
557
+ s0 = peg$FAILED;
558
+ }
521
559
  } else {
522
560
  peg$currPos = s0;
523
561
  s0 = peg$FAILED;
@@ -525,6 +563,92 @@ function peg$parse(input, options) {
525
563
  }
526
564
  return s0;
527
565
  }
566
+ function peg$parseskipEmptyLines() {
567
+ let s0, s1, s2, s3;
568
+ s0 = [];
569
+ s1 = peg$currPos;
570
+ s2 = [];
571
+ s3 = input.charAt(peg$currPos);
572
+ if (peg$r0.test(s3)) {
573
+ peg$currPos++;
574
+ } else {
575
+ s3 = peg$FAILED;
576
+ if (peg$silentFails === 0) {
577
+ peg$fail(peg$e0);
578
+ }
579
+ }
580
+ while (s3 !== peg$FAILED) {
581
+ s2.push(s3);
582
+ s3 = input.charAt(peg$currPos);
583
+ if (peg$r0.test(s3)) {
584
+ peg$currPos++;
585
+ } else {
586
+ s3 = peg$FAILED;
587
+ if (peg$silentFails === 0) {
588
+ peg$fail(peg$e0);
589
+ }
590
+ }
591
+ }
592
+ s3 = input.charAt(peg$currPos);
593
+ if (peg$r1.test(s3)) {
594
+ peg$currPos++;
595
+ } else {
596
+ s3 = peg$FAILED;
597
+ if (peg$silentFails === 0) {
598
+ peg$fail(peg$e1);
599
+ }
600
+ }
601
+ if (s3 !== peg$FAILED) {
602
+ s2 = [s2, s3];
603
+ s1 = s2;
604
+ } else {
605
+ peg$currPos = s1;
606
+ s1 = peg$FAILED;
607
+ }
608
+ while (s1 !== peg$FAILED) {
609
+ s0.push(s1);
610
+ s1 = peg$currPos;
611
+ s2 = [];
612
+ s3 = input.charAt(peg$currPos);
613
+ if (peg$r0.test(s3)) {
614
+ peg$currPos++;
615
+ } else {
616
+ s3 = peg$FAILED;
617
+ if (peg$silentFails === 0) {
618
+ peg$fail(peg$e0);
619
+ }
620
+ }
621
+ while (s3 !== peg$FAILED) {
622
+ s2.push(s3);
623
+ s3 = input.charAt(peg$currPos);
624
+ if (peg$r0.test(s3)) {
625
+ peg$currPos++;
626
+ } else {
627
+ s3 = peg$FAILED;
628
+ if (peg$silentFails === 0) {
629
+ peg$fail(peg$e0);
630
+ }
631
+ }
632
+ }
633
+ s3 = input.charAt(peg$currPos);
634
+ if (peg$r1.test(s3)) {
635
+ peg$currPos++;
636
+ } else {
637
+ s3 = peg$FAILED;
638
+ if (peg$silentFails === 0) {
639
+ peg$fail(peg$e1);
640
+ }
641
+ }
642
+ if (s3 !== peg$FAILED) {
643
+ s2 = [s2, s3];
644
+ s1 = s2;
645
+ } else {
646
+ peg$currPos = s1;
647
+ s1 = peg$FAILED;
648
+ }
649
+ }
650
+ return s0;
651
+ }
528
652
  function peg$parselinks() {
529
653
  let s0, s1, s2, s3;
530
654
  s0 = peg$currPos;
@@ -537,7 +661,7 @@ function peg$parse(input, options) {
537
661
  s3 = peg$parseline();
538
662
  }
539
663
  peg$savedPos = s0;
540
- s0 = peg$f2(s1, s2);
664
+ s0 = peg$f4(s1, s2);
541
665
  } else {
542
666
  peg$currPos = s0;
543
667
  s0 = peg$FAILED;
@@ -545,14 +669,17 @@ function peg$parse(input, options) {
545
669
  return s0;
546
670
  }
547
671
  function peg$parsefirstLine() {
548
- let s0, s1;
672
+ let s0, s1, s2;
549
673
  s0 = peg$currPos;
550
- s1 = peg$parseelement();
551
- if (s1 !== peg$FAILED) {
674
+ s1 = peg$parseSET_BASE_INDENTATION();
675
+ s2 = peg$parseelement();
676
+ if (s2 !== peg$FAILED) {
552
677
  peg$savedPos = s0;
553
- s1 = peg$f3(s1);
678
+ s0 = peg$f5(s2);
679
+ } else {
680
+ peg$currPos = s0;
681
+ s0 = peg$FAILED;
554
682
  }
555
- s0 = s1;
556
683
  return s0;
557
684
  }
558
685
  function peg$parseline() {
@@ -563,7 +690,7 @@ function peg$parse(input, options) {
563
690
  s2 = peg$parseelement();
564
691
  if (s2 !== peg$FAILED) {
565
692
  peg$savedPos = s0;
566
- s0 = peg$f4(s2);
693
+ s0 = peg$f6(s2);
567
694
  } else {
568
695
  peg$currPos = s0;
569
696
  s0 = peg$FAILED;
@@ -584,7 +711,7 @@ function peg$parse(input, options) {
584
711
  s3 = peg$parselinks();
585
712
  if (s3 !== peg$FAILED) {
586
713
  peg$savedPos = s0;
587
- s0 = peg$f5(s1, s3);
714
+ s0 = peg$f7(s1, s3);
588
715
  } else {
589
716
  peg$currPos = s0;
590
717
  s0 = peg$FAILED;
@@ -602,7 +729,7 @@ function peg$parse(input, options) {
602
729
  s1 = peg$parseanyLink();
603
730
  if (s1 !== peg$FAILED) {
604
731
  peg$savedPos = s0;
605
- s1 = peg$f6(s1);
732
+ s1 = peg$f8(s1);
606
733
  }
607
734
  s0 = s1;
608
735
  }
@@ -614,7 +741,7 @@ function peg$parse(input, options) {
614
741
  s1 = peg$parsemultiLineAnyLink();
615
742
  if (s1 !== peg$FAILED) {
616
743
  peg$savedPos = s0;
617
- s1 = peg$f7(s1);
744
+ s1 = peg$f9(s1);
618
745
  }
619
746
  s0 = s1;
620
747
  if (s0 === peg$FAILED) {
@@ -622,7 +749,7 @@ function peg$parse(input, options) {
622
749
  s1 = peg$parsereference();
623
750
  if (s1 !== peg$FAILED) {
624
751
  peg$savedPos = s0;
625
- s1 = peg$f8(s1);
752
+ s1 = peg$f10(s1);
626
753
  }
627
754
  s0 = s1;
628
755
  }
@@ -636,7 +763,7 @@ function peg$parse(input, options) {
636
763
  s2 = peg$parseeol();
637
764
  if (s2 !== peg$FAILED) {
638
765
  peg$savedPos = s0;
639
- s0 = peg$f9(s1);
766
+ s0 = peg$f11(s1);
640
767
  } else {
641
768
  peg$currPos = s0;
642
769
  s0 = peg$FAILED;
@@ -650,7 +777,7 @@ function peg$parse(input, options) {
650
777
  s1 = peg$parseindentedIdLink();
651
778
  if (s1 !== peg$FAILED) {
652
779
  peg$savedPos = s0;
653
- s1 = peg$f10(s1);
780
+ s1 = peg$f12(s1);
654
781
  }
655
782
  s0 = s1;
656
783
  if (s0 === peg$FAILED) {
@@ -658,7 +785,7 @@ function peg$parse(input, options) {
658
785
  s1 = peg$parsesingleLineAnyLink();
659
786
  if (s1 !== peg$FAILED) {
660
787
  peg$savedPos = s0;
661
- s1 = peg$f11(s1);
788
+ s1 = peg$f13(s1);
662
789
  }
663
790
  s0 = s1;
664
791
  }
@@ -681,7 +808,7 @@ function peg$parse(input, options) {
681
808
  s2 = peg$parseeol();
682
809
  if (s2 !== peg$FAILED) {
683
810
  peg$savedPos = s0;
684
- s0 = peg$f12(s1);
811
+ s0 = peg$f14(s1);
685
812
  } else {
686
813
  peg$currPos = s0;
687
814
  s0 = peg$FAILED;
@@ -697,7 +824,7 @@ function peg$parse(input, options) {
697
824
  s2 = peg$parseeol();
698
825
  if (s2 !== peg$FAILED) {
699
826
  peg$savedPos = s0;
700
- s0 = peg$f13(s1);
827
+ s0 = peg$f15(s1);
701
828
  } else {
702
829
  peg$currPos = s0;
703
830
  s0 = peg$FAILED;
@@ -716,7 +843,7 @@ function peg$parse(input, options) {
716
843
  if (s1 !== peg$FAILED) {
717
844
  s2 = peg$parse_();
718
845
  peg$savedPos = s0;
719
- s0 = peg$f14(s1);
846
+ s0 = peg$f16(s1);
720
847
  } else {
721
848
  peg$currPos = s0;
722
849
  s0 = peg$FAILED;
@@ -734,7 +861,7 @@ function peg$parse(input, options) {
734
861
  s3 = peg$parsemultiLineValueAndWhitespace();
735
862
  }
736
863
  peg$savedPos = s0;
737
- s0 = peg$f15(s2);
864
+ s0 = peg$f17(s2);
738
865
  return s0;
739
866
  }
740
867
  function peg$parsesingleLineValueAndWhitespace() {
@@ -744,7 +871,7 @@ function peg$parse(input, options) {
744
871
  s2 = peg$parsereferenceOrLink();
745
872
  if (s2 !== peg$FAILED) {
746
873
  peg$savedPos = s0;
747
- s0 = peg$f16(s2);
874
+ s0 = peg$f18(s2);
748
875
  } else {
749
876
  peg$currPos = s0;
750
877
  s0 = peg$FAILED;
@@ -766,7 +893,7 @@ function peg$parse(input, options) {
766
893
  }
767
894
  if (s1 !== peg$FAILED) {
768
895
  peg$savedPos = s0;
769
- s1 = peg$f17(s1);
896
+ s1 = peg$f19(s1);
770
897
  }
771
898
  s0 = s1;
772
899
  return s0;
@@ -784,14 +911,14 @@ function peg$parse(input, options) {
784
911
  } else {
785
912
  s4 = peg$FAILED;
786
913
  if (peg$silentFails === 0) {
787
- peg$fail(peg$e0);
914
+ peg$fail(peg$e2);
788
915
  }
789
916
  }
790
917
  if (s4 !== peg$FAILED) {
791
918
  s5 = peg$parsesingleLineValues();
792
919
  if (s5 !== peg$FAILED) {
793
920
  peg$savedPos = s0;
794
- s0 = peg$f18(s2, s5);
921
+ s0 = peg$f20(s2, s5);
795
922
  } else {
796
923
  peg$currPos = s0;
797
924
  s0 = peg$FAILED;
@@ -815,7 +942,7 @@ function peg$parse(input, options) {
815
942
  } else {
816
943
  s1 = peg$FAILED;
817
944
  if (peg$silentFails === 0) {
818
- peg$fail(peg$e1);
945
+ peg$fail(peg$e3);
819
946
  }
820
947
  }
821
948
  if (s1 !== peg$FAILED) {
@@ -829,7 +956,7 @@ function peg$parse(input, options) {
829
956
  } else {
830
957
  s5 = peg$FAILED;
831
958
  if (peg$silentFails === 0) {
832
- peg$fail(peg$e0);
959
+ peg$fail(peg$e2);
833
960
  }
834
961
  }
835
962
  if (s5 !== peg$FAILED) {
@@ -841,12 +968,12 @@ function peg$parse(input, options) {
841
968
  } else {
842
969
  s8 = peg$FAILED;
843
970
  if (peg$silentFails === 0) {
844
- peg$fail(peg$e2);
971
+ peg$fail(peg$e4);
845
972
  }
846
973
  }
847
974
  if (s8 !== peg$FAILED) {
848
975
  peg$savedPos = s0;
849
- s0 = peg$f19(s3, s6);
976
+ s0 = peg$f21(s3, s6);
850
977
  } else {
851
978
  peg$currPos = s0;
852
979
  s0 = peg$FAILED;
@@ -871,7 +998,7 @@ function peg$parse(input, options) {
871
998
  s1 = peg$parsesingleLineValues();
872
999
  if (s1 !== peg$FAILED) {
873
1000
  peg$savedPos = s0;
874
- s1 = peg$f20(s1);
1001
+ s1 = peg$f22(s1);
875
1002
  }
876
1003
  s0 = s1;
877
1004
  return s0;
@@ -885,7 +1012,7 @@ function peg$parse(input, options) {
885
1012
  } else {
886
1013
  s1 = peg$FAILED;
887
1014
  if (peg$silentFails === 0) {
888
- peg$fail(peg$e1);
1015
+ peg$fail(peg$e3);
889
1016
  }
890
1017
  }
891
1018
  if (s1 !== peg$FAILED) {
@@ -897,12 +1024,12 @@ function peg$parse(input, options) {
897
1024
  } else {
898
1025
  s4 = peg$FAILED;
899
1026
  if (peg$silentFails === 0) {
900
- peg$fail(peg$e2);
1027
+ peg$fail(peg$e4);
901
1028
  }
902
1029
  }
903
1030
  if (s4 !== peg$FAILED) {
904
1031
  peg$savedPos = s0;
905
- s0 = peg$f21(s2);
1032
+ s0 = peg$f23(s2);
906
1033
  } else {
907
1034
  peg$currPos = s0;
908
1035
  s0 = peg$FAILED;
@@ -925,14 +1052,14 @@ function peg$parse(input, options) {
925
1052
  } else {
926
1053
  s3 = peg$FAILED;
927
1054
  if (peg$silentFails === 0) {
928
- peg$fail(peg$e0);
1055
+ peg$fail(peg$e2);
929
1056
  }
930
1057
  }
931
1058
  if (s3 !== peg$FAILED) {
932
1059
  s4 = peg$parseeol();
933
1060
  if (s4 !== peg$FAILED) {
934
1061
  peg$savedPos = s0;
935
- s0 = peg$f22(s1);
1062
+ s0 = peg$f24(s1);
936
1063
  } else {
937
1064
  peg$currPos = s0;
938
1065
  s0 = peg$FAILED;
@@ -973,7 +1100,7 @@ function peg$parse(input, options) {
973
1100
  }
974
1101
  if (s1 !== peg$FAILED) {
975
1102
  peg$savedPos = s0;
976
- s1 = peg$f23(s1);
1103
+ s1 = peg$f25(s1);
977
1104
  }
978
1105
  s0 = s1;
979
1106
  return s0;
@@ -987,30 +1114,30 @@ function peg$parse(input, options) {
987
1114
  } else {
988
1115
  s1 = peg$FAILED;
989
1116
  if (peg$silentFails === 0) {
990
- peg$fail(peg$e3);
1117
+ peg$fail(peg$e5);
991
1118
  }
992
1119
  }
993
1120
  if (s1 !== peg$FAILED) {
994
1121
  s2 = [];
995
1122
  s3 = input.charAt(peg$currPos);
996
- if (peg$r0.test(s3)) {
1123
+ if (peg$r2.test(s3)) {
997
1124
  peg$currPos++;
998
1125
  } else {
999
1126
  s3 = peg$FAILED;
1000
1127
  if (peg$silentFails === 0) {
1001
- peg$fail(peg$e4);
1128
+ peg$fail(peg$e6);
1002
1129
  }
1003
1130
  }
1004
1131
  if (s3 !== peg$FAILED) {
1005
1132
  while (s3 !== peg$FAILED) {
1006
1133
  s2.push(s3);
1007
1134
  s3 = input.charAt(peg$currPos);
1008
- if (peg$r0.test(s3)) {
1135
+ if (peg$r2.test(s3)) {
1009
1136
  peg$currPos++;
1010
1137
  } else {
1011
1138
  s3 = peg$FAILED;
1012
1139
  if (peg$silentFails === 0) {
1013
- peg$fail(peg$e4);
1140
+ peg$fail(peg$e6);
1014
1141
  }
1015
1142
  }
1016
1143
  }
@@ -1024,12 +1151,12 @@ function peg$parse(input, options) {
1024
1151
  } else {
1025
1152
  s3 = peg$FAILED;
1026
1153
  if (peg$silentFails === 0) {
1027
- peg$fail(peg$e3);
1154
+ peg$fail(peg$e5);
1028
1155
  }
1029
1156
  }
1030
1157
  if (s3 !== peg$FAILED) {
1031
1158
  peg$savedPos = s0;
1032
- s0 = peg$f24(s2);
1159
+ s0 = peg$f26(s2);
1033
1160
  } else {
1034
1161
  peg$currPos = s0;
1035
1162
  s0 = peg$FAILED;
@@ -1053,30 +1180,30 @@ function peg$parse(input, options) {
1053
1180
  } else {
1054
1181
  s1 = peg$FAILED;
1055
1182
  if (peg$silentFails === 0) {
1056
- peg$fail(peg$e5);
1183
+ peg$fail(peg$e7);
1057
1184
  }
1058
1185
  }
1059
1186
  if (s1 !== peg$FAILED) {
1060
1187
  s2 = [];
1061
1188
  s3 = input.charAt(peg$currPos);
1062
- if (peg$r1.test(s3)) {
1189
+ if (peg$r3.test(s3)) {
1063
1190
  peg$currPos++;
1064
1191
  } else {
1065
1192
  s3 = peg$FAILED;
1066
1193
  if (peg$silentFails === 0) {
1067
- peg$fail(peg$e6);
1194
+ peg$fail(peg$e8);
1068
1195
  }
1069
1196
  }
1070
1197
  if (s3 !== peg$FAILED) {
1071
1198
  while (s3 !== peg$FAILED) {
1072
1199
  s2.push(s3);
1073
1200
  s3 = input.charAt(peg$currPos);
1074
- if (peg$r1.test(s3)) {
1201
+ if (peg$r3.test(s3)) {
1075
1202
  peg$currPos++;
1076
1203
  } else {
1077
1204
  s3 = peg$FAILED;
1078
1205
  if (peg$silentFails === 0) {
1079
- peg$fail(peg$e6);
1206
+ peg$fail(peg$e8);
1080
1207
  }
1081
1208
  }
1082
1209
  }
@@ -1090,12 +1217,12 @@ function peg$parse(input, options) {
1090
1217
  } else {
1091
1218
  s3 = peg$FAILED;
1092
1219
  if (peg$silentFails === 0) {
1093
- peg$fail(peg$e5);
1220
+ peg$fail(peg$e7);
1094
1221
  }
1095
1222
  }
1096
1223
  if (s3 !== peg$FAILED) {
1097
1224
  peg$savedPos = s0;
1098
- s0 = peg$f25(s2);
1225
+ s0 = peg$f27(s2);
1099
1226
  } else {
1100
1227
  peg$currPos = s0;
1101
1228
  s0 = peg$FAILED;
@@ -1110,6 +1237,36 @@ function peg$parse(input, options) {
1110
1237
  }
1111
1238
  return s0;
1112
1239
  }
1240
+ function peg$parseSET_BASE_INDENTATION() {
1241
+ let s0, s1, s2;
1242
+ s0 = peg$currPos;
1243
+ s1 = [];
1244
+ if (input.charCodeAt(peg$currPos) === 32) {
1245
+ s2 = peg$c5;
1246
+ peg$currPos++;
1247
+ } else {
1248
+ s2 = peg$FAILED;
1249
+ if (peg$silentFails === 0) {
1250
+ peg$fail(peg$e9);
1251
+ }
1252
+ }
1253
+ while (s2 !== peg$FAILED) {
1254
+ s1.push(s2);
1255
+ if (input.charCodeAt(peg$currPos) === 32) {
1256
+ s2 = peg$c5;
1257
+ peg$currPos++;
1258
+ } else {
1259
+ s2 = peg$FAILED;
1260
+ if (peg$silentFails === 0) {
1261
+ peg$fail(peg$e9);
1262
+ }
1263
+ }
1264
+ }
1265
+ peg$savedPos = s0;
1266
+ s1 = peg$f28(s1);
1267
+ s0 = s1;
1268
+ return s0;
1269
+ }
1113
1270
  function peg$parsePUSH_INDENTATION() {
1114
1271
  let s0, s1, s2;
1115
1272
  s0 = peg$currPos;
@@ -1120,7 +1277,7 @@ function peg$parse(input, options) {
1120
1277
  } else {
1121
1278
  s2 = peg$FAILED;
1122
1279
  if (peg$silentFails === 0) {
1123
- peg$fail(peg$e7);
1280
+ peg$fail(peg$e9);
1124
1281
  }
1125
1282
  }
1126
1283
  while (s2 !== peg$FAILED) {
@@ -1131,12 +1288,12 @@ function peg$parse(input, options) {
1131
1288
  } else {
1132
1289
  s2 = peg$FAILED;
1133
1290
  if (peg$silentFails === 0) {
1134
- peg$fail(peg$e7);
1291
+ peg$fail(peg$e9);
1135
1292
  }
1136
1293
  }
1137
1294
  }
1138
1295
  peg$savedPos = peg$currPos;
1139
- s2 = peg$f26(s1);
1296
+ s2 = peg$f29(s1);
1140
1297
  if (s2) {
1141
1298
  s2 = undefined;
1142
1299
  } else {
@@ -1144,7 +1301,7 @@ function peg$parse(input, options) {
1144
1301
  }
1145
1302
  if (s2 !== peg$FAILED) {
1146
1303
  peg$savedPos = s0;
1147
- s0 = peg$f27(s1);
1304
+ s0 = peg$f30(s1);
1148
1305
  } else {
1149
1306
  peg$currPos = s0;
1150
1307
  s0 = peg$FAILED;
@@ -1161,7 +1318,7 @@ function peg$parse(input, options) {
1161
1318
  } else {
1162
1319
  s2 = peg$FAILED;
1163
1320
  if (peg$silentFails === 0) {
1164
- peg$fail(peg$e7);
1321
+ peg$fail(peg$e9);
1165
1322
  }
1166
1323
  }
1167
1324
  while (s2 !== peg$FAILED) {
@@ -1172,12 +1329,12 @@ function peg$parse(input, options) {
1172
1329
  } else {
1173
1330
  s2 = peg$FAILED;
1174
1331
  if (peg$silentFails === 0) {
1175
- peg$fail(peg$e7);
1332
+ peg$fail(peg$e9);
1176
1333
  }
1177
1334
  }
1178
1335
  }
1179
1336
  peg$savedPos = peg$currPos;
1180
- s2 = peg$f28(s1);
1337
+ s2 = peg$f31(s1);
1181
1338
  if (s2) {
1182
1339
  s2 = undefined;
1183
1340
  } else {
@@ -1198,24 +1355,24 @@ function peg$parse(input, options) {
1198
1355
  s1 = peg$parse__();
1199
1356
  s2 = [];
1200
1357
  s3 = input.charAt(peg$currPos);
1201
- if (peg$r2.test(s3)) {
1358
+ if (peg$r1.test(s3)) {
1202
1359
  peg$currPos++;
1203
1360
  } else {
1204
1361
  s3 = peg$FAILED;
1205
1362
  if (peg$silentFails === 0) {
1206
- peg$fail(peg$e8);
1363
+ peg$fail(peg$e1);
1207
1364
  }
1208
1365
  }
1209
1366
  if (s3 !== peg$FAILED) {
1210
1367
  while (s3 !== peg$FAILED) {
1211
1368
  s2.push(s3);
1212
1369
  s3 = input.charAt(peg$currPos);
1213
- if (peg$r2.test(s3)) {
1370
+ if (peg$r1.test(s3)) {
1214
1371
  peg$currPos++;
1215
1372
  } else {
1216
1373
  s3 = peg$FAILED;
1217
1374
  if (peg$silentFails === 0) {
1218
- peg$fail(peg$e8);
1375
+ peg$fail(peg$e1);
1219
1376
  }
1220
1377
  }
1221
1378
  }
@@ -1244,7 +1401,7 @@ function peg$parse(input, options) {
1244
1401
  } else {
1245
1402
  s1 = peg$FAILED;
1246
1403
  if (peg$silentFails === 0) {
1247
- peg$fail(peg$e9);
1404
+ peg$fail(peg$e10);
1248
1405
  }
1249
1406
  }
1250
1407
  peg$silentFails--;
@@ -1260,23 +1417,23 @@ function peg$parse(input, options) {
1260
1417
  let s0, s1;
1261
1418
  s0 = [];
1262
1419
  s1 = input.charAt(peg$currPos);
1263
- if (peg$r3.test(s1)) {
1420
+ if (peg$r0.test(s1)) {
1264
1421
  peg$currPos++;
1265
1422
  } else {
1266
1423
  s1 = peg$FAILED;
1267
1424
  if (peg$silentFails === 0) {
1268
- peg$fail(peg$e10);
1425
+ peg$fail(peg$e0);
1269
1426
  }
1270
1427
  }
1271
1428
  while (s1 !== peg$FAILED) {
1272
1429
  s0.push(s1);
1273
1430
  s1 = input.charAt(peg$currPos);
1274
- if (peg$r3.test(s1)) {
1431
+ if (peg$r0.test(s1)) {
1275
1432
  peg$currPos++;
1276
1433
  } else {
1277
1434
  s1 = peg$FAILED;
1278
1435
  if (peg$silentFails === 0) {
1279
- peg$fail(peg$e10);
1436
+ peg$fail(peg$e0);
1280
1437
  }
1281
1438
  }
1282
1439
  }
@@ -1319,8 +1476,21 @@ function peg$parse(input, options) {
1319
1476
  return s0;
1320
1477
  }
1321
1478
  let indentationStack = [0];
1479
+ let baseIndentation = null;
1480
+ function setBaseIndentation(spaces) {
1481
+ if (baseIndentation === null) {
1482
+ baseIndentation = spaces.length;
1483
+ }
1484
+ }
1485
+ function normalizeIndentation(spaces) {
1486
+ if (baseIndentation === null) {
1487
+ return spaces.length;
1488
+ }
1489
+ return Math.max(0, spaces.length - baseIndentation);
1490
+ }
1322
1491
  function pushIndentation(spaces) {
1323
- indentationStack.push(spaces.length);
1492
+ const normalized = normalizeIndentation(spaces);
1493
+ indentationStack.push(normalized);
1324
1494
  }
1325
1495
  function popIndentation() {
1326
1496
  if (indentationStack.length > 1) {
@@ -1328,7 +1498,8 @@ function peg$parse(input, options) {
1328
1498
  }
1329
1499
  }
1330
1500
  function checkIndentation(spaces) {
1331
- return spaces.length >= indentationStack[indentationStack.length - 1];
1501
+ const normalized = normalizeIndentation(spaces);
1502
+ return normalized >= indentationStack[indentationStack.length - 1];
1332
1503
  }
1333
1504
  function getCurrentIndentation() {
1334
1505
  return indentationStack[indentationStack.length - 1];