links-notation 0.21.2 → 0.21.3

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
@@ -639,11 +639,11 @@ function peg$parse(input, options) {
639
639
  const peg$e0 = peg$classExpectation([" ", "\t"], false, false, false);
640
640
  const peg$e1 = peg$classExpectation(["\r", `
641
641
  `], false, false, false);
642
- const peg$e2 = peg$literalExpectation("(", false);
643
- const peg$e3 = peg$literalExpectation(")", false);
644
- const peg$e4 = peg$literalExpectation(":", false);
645
- const peg$e5 = peg$literalExpectation('"', false);
646
- const peg$e6 = peg$anyExpectation();
642
+ const peg$e2 = peg$anyExpectation();
643
+ const peg$e3 = peg$literalExpectation("(", false);
644
+ const peg$e4 = peg$literalExpectation(")", false);
645
+ const peg$e5 = peg$literalExpectation(":", false);
646
+ const peg$e6 = peg$literalExpectation('"', false);
647
647
  const peg$e7 = peg$literalExpectation("'", false);
648
648
  const peg$e8 = peg$literalExpectation("`", false);
649
649
  const peg$e9 = peg$literalExpectation(" ", false);
@@ -673,26 +673,31 @@ function peg$parse(input, options) {
673
673
  function peg$f6(l) {
674
674
  return l;
675
675
  }
676
- function peg$f7(e, l) {
676
+ function peg$f7() {
677
+ return !unreadableLines.has(lineKey(offset()));
678
+ }
679
+ function peg$f8(e, saved, l) {
680
+ if (l === null) {
681
+ indentationStack = saved;
682
+ return e;
683
+ }
677
684
  return Object.assign({}, e, { children: l });
678
685
  }
679
- function peg$f8(e) {
680
- return e;
686
+ function peg$f9() {
687
+ unreadableLines.add(lineKey(offset()));
688
+ return false;
681
689
  }
682
- function peg$f9(l) {
690
+ function peg$f10(l) {
683
691
  return l;
684
692
  }
685
- function peg$f10(i) {
693
+ function peg$f11(i) {
686
694
  return { id: i };
687
695
  }
688
- function peg$f11(ml) {
689
- return ml;
696
+ function peg$f12(g, rest) {
697
+ return rest === null ? g : { values: [g].concat(rest) };
690
698
  }
691
- function peg$f12(il) {
692
- return il;
693
- }
694
- function peg$f13(sl) {
695
- return sl;
699
+ function peg$f13() {
700
+ return null;
696
701
  }
697
702
  function peg$f14(fl) {
698
703
  return fl;
@@ -704,34 +709,38 @@ function peg$parse(input, options) {
704
709
  exitNestedContext();
705
710
  return body;
706
711
  }
707
- function peg$f17(l) {
712
+ function peg$f17() {
713
+ exitNestedContext();
714
+ return false;
715
+ }
716
+ function peg$f18(l) {
708
717
  return { nested: l };
709
718
  }
710
- function peg$f18() {
719
+ function peg$f19() {
711
720
  return { nested: [] };
712
721
  }
713
- function peg$f19() {
722
+ function peg$f20() {
714
723
  return enterNestedContext();
715
724
  }
716
- function peg$f20(value) {
725
+ function peg$f21(value) {
717
726
  return value;
718
727
  }
719
- function peg$f21(list) {
728
+ function peg$f22(list) {
720
729
  return list;
721
730
  }
722
- function peg$f22(id, v) {
731
+ function peg$f23(id, v) {
723
732
  return { id, values: v };
724
733
  }
725
- function peg$f23(v) {
734
+ function peg$f24(v) {
726
735
  return { values: v };
727
736
  }
728
- function peg$f24(id) {
737
+ function peg$f25(id) {
729
738
  return { id, values: [] };
730
739
  }
731
- function peg$f25(chars) {
740
+ function peg$f26(chars) {
732
741
  return chars.join("");
733
742
  }
734
- function peg$f26() {
743
+ function peg$f27() {
735
744
  const pos = offset();
736
745
  const result = parseQuotedStringAt(input, pos, '"');
737
746
  if (result) {
@@ -741,19 +750,19 @@ function peg$parse(input, options) {
741
750
  }
742
751
  return false;
743
752
  }
744
- function peg$f27(chars) {
753
+ function peg$f28(chars) {
745
754
  return parsedValue;
746
755
  }
747
- function peg$f28(c, cs) {
756
+ function peg$f29(c, cs) {
748
757
  return [c].concat(cs).join("");
749
758
  }
750
- function peg$f29() {
759
+ function peg$f30() {
751
760
  return parsedLength > 1 && (parsedLength--, true);
752
761
  }
753
- function peg$f30(c) {
762
+ function peg$f31(c) {
754
763
  return c;
755
764
  }
756
- function peg$f31() {
765
+ function peg$f32() {
757
766
  const pos = offset();
758
767
  const result = parseQuotedStringAt(input, pos, "'");
759
768
  if (result) {
@@ -763,19 +772,19 @@ function peg$parse(input, options) {
763
772
  }
764
773
  return false;
765
774
  }
766
- function peg$f32(chars) {
775
+ function peg$f33(chars) {
767
776
  return parsedValue;
768
777
  }
769
- function peg$f33(c, cs) {
778
+ function peg$f34(c, cs) {
770
779
  return [c].concat(cs).join("");
771
780
  }
772
- function peg$f34() {
781
+ function peg$f35() {
773
782
  return parsedLength > 1 && (parsedLength--, true);
774
783
  }
775
- function peg$f35(c) {
784
+ function peg$f36(c) {
776
785
  return c;
777
786
  }
778
- function peg$f36() {
787
+ function peg$f37() {
779
788
  const pos = offset();
780
789
  const result = parseQuotedStringAt(input, pos, "`");
781
790
  if (result) {
@@ -785,31 +794,34 @@ function peg$parse(input, options) {
785
794
  }
786
795
  return false;
787
796
  }
788
- function peg$f37(chars) {
797
+ function peg$f38(chars) {
789
798
  return parsedValue;
790
799
  }
791
- function peg$f38(c, cs) {
800
+ function peg$f39(c, cs) {
792
801
  return [c].concat(cs).join("");
793
802
  }
794
- function peg$f39() {
803
+ function peg$f40() {
795
804
  return parsedLength > 1 && (parsedLength--, true);
796
805
  }
797
- function peg$f40(c) {
806
+ function peg$f41(c) {
798
807
  return c;
799
808
  }
800
- function peg$f41(spaces) {
809
+ function peg$f42() {
810
+ return indentationStack.slice();
811
+ }
812
+ function peg$f43(spaces) {
801
813
  setBaseIndentation(spaces);
802
814
  }
803
- function peg$f42(spaces) {
815
+ function peg$f44(spaces) {
804
816
  return normalizeIndentation(spaces) > getCurrentIndentation();
805
817
  }
806
- function peg$f43(spaces) {
818
+ function peg$f45(spaces) {
807
819
  pushIndentation(spaces);
808
820
  }
809
- function peg$f44(spaces) {
821
+ function peg$f46(spaces) {
810
822
  return checkIndentation(spaces);
811
823
  }
812
- function peg$f45() {
824
+ function peg$f47() {
813
825
  return isInsideNestedContext();
814
826
  }
815
827
  let peg$currPos = options.peg$currPos | 0;
@@ -1135,20 +1147,38 @@ function peg$parse(input, options) {
1135
1147
  return s0;
1136
1148
  }
1137
1149
  function peg$parseelement() {
1138
- let s0, s1, s2, s3;
1150
+ let s0, s1, s2, s3, s4, s5, s6;
1139
1151
  s0 = peg$currPos;
1140
- s1 = peg$parseanyLink();
1152
+ peg$savedPos = peg$currPos;
1153
+ s1 = peg$f7();
1154
+ if (s1) {
1155
+ s1 = undefined;
1156
+ } else {
1157
+ s1 = peg$FAILED;
1158
+ }
1141
1159
  if (s1 !== peg$FAILED) {
1142
- s2 = peg$parsePUSH_INDENTATION();
1160
+ s2 = peg$parseanyLink();
1143
1161
  if (s2 !== peg$FAILED) {
1144
- s3 = peg$parselinks();
1145
- if (s3 !== peg$FAILED) {
1146
- peg$savedPos = s0;
1147
- s0 = peg$f7(s1, s3);
1162
+ s3 = peg$parseSAVE_INDENTATION();
1163
+ s4 = peg$currPos;
1164
+ s5 = peg$parsePUSH_INDENTATION();
1165
+ if (s5 !== peg$FAILED) {
1166
+ s6 = peg$parselinks();
1167
+ if (s6 !== peg$FAILED) {
1168
+ s4 = s6;
1169
+ } else {
1170
+ peg$currPos = s4;
1171
+ s4 = peg$FAILED;
1172
+ }
1148
1173
  } else {
1149
- peg$currPos = s0;
1150
- s0 = peg$FAILED;
1174
+ peg$currPos = s4;
1175
+ s4 = peg$FAILED;
1176
+ }
1177
+ if (s4 === peg$FAILED) {
1178
+ s4 = null;
1151
1179
  }
1180
+ peg$savedPos = s0;
1181
+ s0 = peg$f8(s2, s3, s4);
1152
1182
  } else {
1153
1183
  peg$currPos = s0;
1154
1184
  s0 = peg$FAILED;
@@ -1159,12 +1189,34 @@ function peg$parse(input, options) {
1159
1189
  }
1160
1190
  if (s0 === peg$FAILED) {
1161
1191
  s0 = peg$currPos;
1162
- s1 = peg$parseanyLink();
1192
+ peg$savedPos = peg$currPos;
1193
+ s1 = peg$f9();
1194
+ if (s1) {
1195
+ s1 = undefined;
1196
+ } else {
1197
+ s1 = peg$FAILED;
1198
+ }
1163
1199
  if (s1 !== peg$FAILED) {
1164
- peg$savedPos = s0;
1165
- s1 = peg$f8(s1);
1200
+ if (input.length > peg$currPos) {
1201
+ s2 = input.charAt(peg$currPos);
1202
+ peg$currPos++;
1203
+ } else {
1204
+ s2 = peg$FAILED;
1205
+ if (peg$silentFails === 0) {
1206
+ peg$fail(peg$e2);
1207
+ }
1208
+ }
1209
+ if (s2 !== peg$FAILED) {
1210
+ s1 = [s1, s2];
1211
+ s0 = s1;
1212
+ } else {
1213
+ peg$currPos = s0;
1214
+ s0 = peg$FAILED;
1215
+ }
1216
+ } else {
1217
+ peg$currPos = s0;
1218
+ s0 = peg$FAILED;
1166
1219
  }
1167
- s0 = s1;
1168
1220
  }
1169
1221
  return s0;
1170
1222
  }
@@ -1174,7 +1226,7 @@ function peg$parse(input, options) {
1174
1226
  s1 = peg$parsenestedGroup();
1175
1227
  if (s1 !== peg$FAILED) {
1176
1228
  peg$savedPos = s0;
1177
- s1 = peg$f9(s1);
1229
+ s1 = peg$f10(s1);
1178
1230
  }
1179
1231
  s0 = s1;
1180
1232
  if (s0 === peg$FAILED) {
@@ -1182,7 +1234,7 @@ function peg$parse(input, options) {
1182
1234
  s1 = peg$parsereference();
1183
1235
  if (s1 !== peg$FAILED) {
1184
1236
  peg$savedPos = s0;
1185
- s1 = peg$f10(s1);
1237
+ s1 = peg$f11(s1);
1186
1238
  }
1187
1239
  s0 = s1;
1188
1240
  }
@@ -1191,12 +1243,28 @@ function peg$parse(input, options) {
1191
1243
  function peg$parseanyLink() {
1192
1244
  let s0, s1, s2;
1193
1245
  s0 = peg$currPos;
1194
- s1 = peg$parsenestedGroup();
1246
+ s1 = peg$currPos;
1247
+ peg$silentFails++;
1248
+ if (input.charCodeAt(peg$currPos) === 40) {
1249
+ s2 = peg$c0;
1250
+ peg$currPos++;
1251
+ } else {
1252
+ s2 = peg$FAILED;
1253
+ if (peg$silentFails === 0) {
1254
+ peg$fail(peg$e3);
1255
+ }
1256
+ }
1257
+ peg$silentFails--;
1258
+ if (s2 !== peg$FAILED) {
1259
+ peg$currPos = s1;
1260
+ s1 = undefined;
1261
+ } else {
1262
+ s1 = peg$FAILED;
1263
+ }
1195
1264
  if (s1 !== peg$FAILED) {
1196
- s2 = peg$parseeol();
1265
+ s2 = peg$parsegroupLink();
1197
1266
  if (s2 !== peg$FAILED) {
1198
- peg$savedPos = s0;
1199
- s0 = peg$f11(s1);
1267
+ s0 = s2;
1200
1268
  } else {
1201
1269
  peg$currPos = s0;
1202
1270
  s0 = peg$FAILED;
@@ -1207,20 +1275,84 @@ function peg$parse(input, options) {
1207
1275
  }
1208
1276
  if (s0 === peg$FAILED) {
1209
1277
  s0 = peg$currPos;
1210
- s1 = peg$parseindentedIdLink();
1278
+ s1 = peg$currPos;
1279
+ peg$silentFails++;
1280
+ if (input.charCodeAt(peg$currPos) === 40) {
1281
+ s2 = peg$c0;
1282
+ peg$currPos++;
1283
+ } else {
1284
+ s2 = peg$FAILED;
1285
+ if (peg$silentFails === 0) {
1286
+ peg$fail(peg$e3);
1287
+ }
1288
+ }
1289
+ peg$silentFails--;
1290
+ if (s2 === peg$FAILED) {
1291
+ s1 = undefined;
1292
+ } else {
1293
+ peg$currPos = s1;
1294
+ s1 = peg$FAILED;
1295
+ }
1211
1296
  if (s1 !== peg$FAILED) {
1297
+ s2 = peg$parseindentedIdLink();
1298
+ if (s2 === peg$FAILED) {
1299
+ s2 = peg$parsesingleLineAnyLink();
1300
+ }
1301
+ if (s2 !== peg$FAILED) {
1302
+ s0 = s2;
1303
+ } else {
1304
+ peg$currPos = s0;
1305
+ s0 = peg$FAILED;
1306
+ }
1307
+ } else {
1308
+ peg$currPos = s0;
1309
+ s0 = peg$FAILED;
1310
+ }
1311
+ }
1312
+ return s0;
1313
+ }
1314
+ function peg$parsegroupLink() {
1315
+ let s0, s1, s2;
1316
+ s0 = peg$currPos;
1317
+ s1 = peg$parsenestedGroup();
1318
+ if (s1 !== peg$FAILED) {
1319
+ s2 = peg$parsegroupLinkRest();
1320
+ if (s2 !== peg$FAILED) {
1212
1321
  peg$savedPos = s0;
1213
- s1 = peg$f12(s1);
1322
+ s0 = peg$f12(s1, s2);
1323
+ } else {
1324
+ peg$currPos = s0;
1325
+ s0 = peg$FAILED;
1214
1326
  }
1215
- s0 = s1;
1216
- if (s0 === peg$FAILED) {
1217
- s0 = peg$currPos;
1218
- s1 = peg$parsesingleLineAnyLink();
1219
- if (s1 !== peg$FAILED) {
1220
- peg$savedPos = s0;
1221
- s1 = peg$f13(s1);
1222
- }
1327
+ } else {
1328
+ peg$currPos = s0;
1329
+ s0 = peg$FAILED;
1330
+ }
1331
+ return s0;
1332
+ }
1333
+ function peg$parsegroupLinkRest() {
1334
+ let s0, s1, s2;
1335
+ s0 = peg$currPos;
1336
+ s1 = peg$parseeol();
1337
+ if (s1 !== peg$FAILED) {
1338
+ peg$savedPos = s0;
1339
+ s1 = peg$f13();
1340
+ }
1341
+ s0 = s1;
1342
+ if (s0 === peg$FAILED) {
1343
+ s0 = peg$currPos;
1344
+ s1 = [];
1345
+ s2 = peg$parsesingleLineValueAndWhitespace();
1346
+ while (s2 !== peg$FAILED) {
1347
+ s1.push(s2);
1348
+ s2 = peg$parsesingleLineValueAndWhitespace();
1349
+ }
1350
+ s2 = peg$parseeol();
1351
+ if (s2 !== peg$FAILED) {
1223
1352
  s0 = s1;
1353
+ } else {
1354
+ peg$currPos = s0;
1355
+ s0 = peg$FAILED;
1224
1356
  }
1225
1357
  }
1226
1358
  return s0;
@@ -1270,7 +1402,7 @@ function peg$parse(input, options) {
1270
1402
  } else {
1271
1403
  s1 = peg$FAILED;
1272
1404
  if (peg$silentFails === 0) {
1273
- peg$fail(peg$e2);
1405
+ peg$fail(peg$e3);
1274
1406
  }
1275
1407
  }
1276
1408
  if (s1 !== peg$FAILED) {
@@ -1292,6 +1424,37 @@ function peg$parse(input, options) {
1292
1424
  peg$currPos = s0;
1293
1425
  s0 = peg$FAILED;
1294
1426
  }
1427
+ if (s0 === peg$FAILED) {
1428
+ s0 = peg$currPos;
1429
+ if (input.charCodeAt(peg$currPos) === 40) {
1430
+ s1 = peg$c0;
1431
+ peg$currPos++;
1432
+ } else {
1433
+ s1 = peg$FAILED;
1434
+ if (peg$silentFails === 0) {
1435
+ peg$fail(peg$e3);
1436
+ }
1437
+ }
1438
+ if (s1 !== peg$FAILED) {
1439
+ peg$savedPos = peg$currPos;
1440
+ s2 = peg$f17();
1441
+ if (s2) {
1442
+ s2 = undefined;
1443
+ } else {
1444
+ s2 = peg$FAILED;
1445
+ }
1446
+ if (s2 !== peg$FAILED) {
1447
+ s1 = [s1, s2];
1448
+ s0 = s1;
1449
+ } else {
1450
+ peg$currPos = s0;
1451
+ s0 = peg$FAILED;
1452
+ }
1453
+ } else {
1454
+ peg$currPos = s0;
1455
+ s0 = peg$FAILED;
1456
+ }
1457
+ }
1295
1458
  return s0;
1296
1459
  }
1297
1460
  function peg$parsenestedGroupBody() {
@@ -1307,12 +1470,12 @@ function peg$parse(input, options) {
1307
1470
  } else {
1308
1471
  s4 = peg$FAILED;
1309
1472
  if (peg$silentFails === 0) {
1310
- peg$fail(peg$e3);
1473
+ peg$fail(peg$e4);
1311
1474
  }
1312
1475
  }
1313
1476
  if (s4 !== peg$FAILED) {
1314
1477
  peg$savedPos = s0;
1315
- s0 = peg$f17(s2);
1478
+ s0 = peg$f18(s2);
1316
1479
  } else {
1317
1480
  peg$currPos = s0;
1318
1481
  s0 = peg$FAILED;
@@ -1330,12 +1493,12 @@ function peg$parse(input, options) {
1330
1493
  } else {
1331
1494
  s2 = peg$FAILED;
1332
1495
  if (peg$silentFails === 0) {
1333
- peg$fail(peg$e3);
1496
+ peg$fail(peg$e4);
1334
1497
  }
1335
1498
  }
1336
1499
  if (s2 !== peg$FAILED) {
1337
1500
  peg$savedPos = s0;
1338
- s0 = peg$f18();
1501
+ s0 = peg$f19();
1339
1502
  } else {
1340
1503
  peg$currPos = s0;
1341
1504
  s0 = peg$FAILED;
@@ -1346,7 +1509,7 @@ function peg$parse(input, options) {
1346
1509
  function peg$parseENTER_NESTED_CONTEXT() {
1347
1510
  let s0;
1348
1511
  peg$savedPos = peg$currPos;
1349
- s0 = peg$f19();
1512
+ s0 = peg$f20();
1350
1513
  if (s0) {
1351
1514
  s0 = undefined;
1352
1515
  } else {
@@ -1361,7 +1524,7 @@ function peg$parse(input, options) {
1361
1524
  s2 = peg$parsereferenceOrLink();
1362
1525
  if (s2 !== peg$FAILED) {
1363
1526
  peg$savedPos = s0;
1364
- s0 = peg$f20(s2);
1527
+ s0 = peg$f21(s2);
1365
1528
  } else {
1366
1529
  peg$currPos = s0;
1367
1530
  s0 = peg$FAILED;
@@ -1383,7 +1546,7 @@ function peg$parse(input, options) {
1383
1546
  }
1384
1547
  if (s1 !== peg$FAILED) {
1385
1548
  peg$savedPos = s0;
1386
- s1 = peg$f21(s1);
1549
+ s1 = peg$f22(s1);
1387
1550
  }
1388
1551
  s0 = s1;
1389
1552
  return s0;
@@ -1401,14 +1564,14 @@ function peg$parse(input, options) {
1401
1564
  } else {
1402
1565
  s4 = peg$FAILED;
1403
1566
  if (peg$silentFails === 0) {
1404
- peg$fail(peg$e4);
1567
+ peg$fail(peg$e5);
1405
1568
  }
1406
1569
  }
1407
1570
  if (s4 !== peg$FAILED) {
1408
1571
  s5 = peg$parsesingleLineValues();
1409
1572
  if (s5 !== peg$FAILED) {
1410
1573
  peg$savedPos = s0;
1411
- s0 = peg$f22(s2, s5);
1574
+ s0 = peg$f23(s2, s5);
1412
1575
  } else {
1413
1576
  peg$currPos = s0;
1414
1577
  s0 = peg$FAILED;
@@ -1429,7 +1592,7 @@ function peg$parse(input, options) {
1429
1592
  s1 = peg$parsesingleLineValues();
1430
1593
  if (s1 !== peg$FAILED) {
1431
1594
  peg$savedPos = s0;
1432
- s1 = peg$f23(s1);
1595
+ s1 = peg$f24(s1);
1433
1596
  }
1434
1597
  s0 = s1;
1435
1598
  return s0;
@@ -1446,14 +1609,14 @@ function peg$parse(input, options) {
1446
1609
  } else {
1447
1610
  s3 = peg$FAILED;
1448
1611
  if (peg$silentFails === 0) {
1449
- peg$fail(peg$e4);
1612
+ peg$fail(peg$e5);
1450
1613
  }
1451
1614
  }
1452
1615
  if (s3 !== peg$FAILED) {
1453
1616
  s4 = peg$parseeol();
1454
1617
  if (s4 !== peg$FAILED) {
1455
1618
  peg$savedPos = s0;
1456
- s0 = peg$f24(s1);
1619
+ s0 = peg$f25(s1);
1457
1620
  } else {
1458
1621
  peg$currPos = s0;
1459
1622
  s0 = peg$FAILED;
@@ -1491,7 +1654,7 @@ function peg$parse(input, options) {
1491
1654
  }
1492
1655
  if (s1 !== peg$FAILED) {
1493
1656
  peg$savedPos = s0;
1494
- s1 = peg$f25(s1);
1657
+ s1 = peg$f26(s1);
1495
1658
  }
1496
1659
  s0 = s1;
1497
1660
  return s0;
@@ -1518,7 +1681,7 @@ function peg$parse(input, options) {
1518
1681
  } else {
1519
1682
  s2 = peg$FAILED;
1520
1683
  if (peg$silentFails === 0) {
1521
- peg$fail(peg$e5);
1684
+ peg$fail(peg$e6);
1522
1685
  }
1523
1686
  }
1524
1687
  peg$silentFails--;
@@ -1530,7 +1693,7 @@ function peg$parse(input, options) {
1530
1693
  }
1531
1694
  if (s1 !== peg$FAILED) {
1532
1695
  peg$savedPos = peg$currPos;
1533
- s2 = peg$f26();
1696
+ s2 = peg$f27();
1534
1697
  if (s2) {
1535
1698
  s2 = undefined;
1536
1699
  } else {
@@ -1540,7 +1703,7 @@ function peg$parse(input, options) {
1540
1703
  s3 = peg$parseconsumeDouble();
1541
1704
  if (s3 !== peg$FAILED) {
1542
1705
  peg$savedPos = s0;
1543
- s0 = peg$f27(s3);
1706
+ s0 = peg$f28(s3);
1544
1707
  } else {
1545
1708
  peg$currPos = s0;
1546
1709
  s0 = peg$FAILED;
@@ -1564,7 +1727,7 @@ function peg$parse(input, options) {
1564
1727
  } else {
1565
1728
  s1 = peg$FAILED;
1566
1729
  if (peg$silentFails === 0) {
1567
- peg$fail(peg$e6);
1730
+ peg$fail(peg$e2);
1568
1731
  }
1569
1732
  }
1570
1733
  if (s1 !== peg$FAILED) {
@@ -1575,7 +1738,7 @@ function peg$parse(input, options) {
1575
1738
  s3 = peg$parseconsumeDoubleMore();
1576
1739
  }
1577
1740
  peg$savedPos = s0;
1578
- s0 = peg$f28(s1, s2);
1741
+ s0 = peg$f29(s1, s2);
1579
1742
  } else {
1580
1743
  peg$currPos = s0;
1581
1744
  s0 = peg$FAILED;
@@ -1586,7 +1749,7 @@ function peg$parse(input, options) {
1586
1749
  let s0, s1, s2;
1587
1750
  s0 = peg$currPos;
1588
1751
  peg$savedPos = peg$currPos;
1589
- s1 = peg$f29();
1752
+ s1 = peg$f30();
1590
1753
  if (s1) {
1591
1754
  s1 = undefined;
1592
1755
  } else {
@@ -1599,12 +1762,12 @@ function peg$parse(input, options) {
1599
1762
  } else {
1600
1763
  s2 = peg$FAILED;
1601
1764
  if (peg$silentFails === 0) {
1602
- peg$fail(peg$e6);
1765
+ peg$fail(peg$e2);
1603
1766
  }
1604
1767
  }
1605
1768
  if (s2 !== peg$FAILED) {
1606
1769
  peg$savedPos = s0;
1607
- s0 = peg$f30(s2);
1770
+ s0 = peg$f31(s2);
1608
1771
  } else {
1609
1772
  peg$currPos = s0;
1610
1773
  s0 = peg$FAILED;
@@ -1638,7 +1801,7 @@ function peg$parse(input, options) {
1638
1801
  }
1639
1802
  if (s1 !== peg$FAILED) {
1640
1803
  peg$savedPos = peg$currPos;
1641
- s2 = peg$f31();
1804
+ s2 = peg$f32();
1642
1805
  if (s2) {
1643
1806
  s2 = undefined;
1644
1807
  } else {
@@ -1648,7 +1811,7 @@ function peg$parse(input, options) {
1648
1811
  s3 = peg$parseconsumeSingle();
1649
1812
  if (s3 !== peg$FAILED) {
1650
1813
  peg$savedPos = s0;
1651
- s0 = peg$f32(s3);
1814
+ s0 = peg$f33(s3);
1652
1815
  } else {
1653
1816
  peg$currPos = s0;
1654
1817
  s0 = peg$FAILED;
@@ -1672,7 +1835,7 @@ function peg$parse(input, options) {
1672
1835
  } else {
1673
1836
  s1 = peg$FAILED;
1674
1837
  if (peg$silentFails === 0) {
1675
- peg$fail(peg$e6);
1838
+ peg$fail(peg$e2);
1676
1839
  }
1677
1840
  }
1678
1841
  if (s1 !== peg$FAILED) {
@@ -1683,7 +1846,7 @@ function peg$parse(input, options) {
1683
1846
  s3 = peg$parseconsumeSingleMore();
1684
1847
  }
1685
1848
  peg$savedPos = s0;
1686
- s0 = peg$f33(s1, s2);
1849
+ s0 = peg$f34(s1, s2);
1687
1850
  } else {
1688
1851
  peg$currPos = s0;
1689
1852
  s0 = peg$FAILED;
@@ -1694,7 +1857,7 @@ function peg$parse(input, options) {
1694
1857
  let s0, s1, s2;
1695
1858
  s0 = peg$currPos;
1696
1859
  peg$savedPos = peg$currPos;
1697
- s1 = peg$f34();
1860
+ s1 = peg$f35();
1698
1861
  if (s1) {
1699
1862
  s1 = undefined;
1700
1863
  } else {
@@ -1707,12 +1870,12 @@ function peg$parse(input, options) {
1707
1870
  } else {
1708
1871
  s2 = peg$FAILED;
1709
1872
  if (peg$silentFails === 0) {
1710
- peg$fail(peg$e6);
1873
+ peg$fail(peg$e2);
1711
1874
  }
1712
1875
  }
1713
1876
  if (s2 !== peg$FAILED) {
1714
1877
  peg$savedPos = s0;
1715
- s0 = peg$f35(s2);
1878
+ s0 = peg$f36(s2);
1716
1879
  } else {
1717
1880
  peg$currPos = s0;
1718
1881
  s0 = peg$FAILED;
@@ -1746,7 +1909,7 @@ function peg$parse(input, options) {
1746
1909
  }
1747
1910
  if (s1 !== peg$FAILED) {
1748
1911
  peg$savedPos = peg$currPos;
1749
- s2 = peg$f36();
1912
+ s2 = peg$f37();
1750
1913
  if (s2) {
1751
1914
  s2 = undefined;
1752
1915
  } else {
@@ -1756,7 +1919,7 @@ function peg$parse(input, options) {
1756
1919
  s3 = peg$parseconsumeBacktick();
1757
1920
  if (s3 !== peg$FAILED) {
1758
1921
  peg$savedPos = s0;
1759
- s0 = peg$f37(s3);
1922
+ s0 = peg$f38(s3);
1760
1923
  } else {
1761
1924
  peg$currPos = s0;
1762
1925
  s0 = peg$FAILED;
@@ -1780,7 +1943,7 @@ function peg$parse(input, options) {
1780
1943
  } else {
1781
1944
  s1 = peg$FAILED;
1782
1945
  if (peg$silentFails === 0) {
1783
- peg$fail(peg$e6);
1946
+ peg$fail(peg$e2);
1784
1947
  }
1785
1948
  }
1786
1949
  if (s1 !== peg$FAILED) {
@@ -1791,7 +1954,7 @@ function peg$parse(input, options) {
1791
1954
  s3 = peg$parseconsumeBacktickMore();
1792
1955
  }
1793
1956
  peg$savedPos = s0;
1794
- s0 = peg$f38(s1, s2);
1957
+ s0 = peg$f39(s1, s2);
1795
1958
  } else {
1796
1959
  peg$currPos = s0;
1797
1960
  s0 = peg$FAILED;
@@ -1802,7 +1965,7 @@ function peg$parse(input, options) {
1802
1965
  let s0, s1, s2;
1803
1966
  s0 = peg$currPos;
1804
1967
  peg$savedPos = peg$currPos;
1805
- s1 = peg$f39();
1968
+ s1 = peg$f40();
1806
1969
  if (s1) {
1807
1970
  s1 = undefined;
1808
1971
  } else {
@@ -1815,12 +1978,12 @@ function peg$parse(input, options) {
1815
1978
  } else {
1816
1979
  s2 = peg$FAILED;
1817
1980
  if (peg$silentFails === 0) {
1818
- peg$fail(peg$e6);
1981
+ peg$fail(peg$e2);
1819
1982
  }
1820
1983
  }
1821
1984
  if (s2 !== peg$FAILED) {
1822
1985
  peg$savedPos = s0;
1823
- s0 = peg$f40(s2);
1986
+ s0 = peg$f41(s2);
1824
1987
  } else {
1825
1988
  peg$currPos = s0;
1826
1989
  s0 = peg$FAILED;
@@ -1831,6 +1994,15 @@ function peg$parse(input, options) {
1831
1994
  }
1832
1995
  return s0;
1833
1996
  }
1997
+ function peg$parseSAVE_INDENTATION() {
1998
+ let s0, s1;
1999
+ s0 = peg$currPos;
2000
+ s1 = "";
2001
+ peg$savedPos = s0;
2002
+ s1 = peg$f42();
2003
+ s0 = s1;
2004
+ return s0;
2005
+ }
1834
2006
  function peg$parseSET_BASE_INDENTATION() {
1835
2007
  let s0, s1, s2;
1836
2008
  s0 = peg$currPos;
@@ -1857,7 +2029,7 @@ function peg$parse(input, options) {
1857
2029
  }
1858
2030
  }
1859
2031
  peg$savedPos = s0;
1860
- s1 = peg$f41(s1);
2032
+ s1 = peg$f43(s1);
1861
2033
  s0 = s1;
1862
2034
  return s0;
1863
2035
  }
@@ -1887,7 +2059,7 @@ function peg$parse(input, options) {
1887
2059
  }
1888
2060
  }
1889
2061
  peg$savedPos = peg$currPos;
1890
- s2 = peg$f42(s1);
2062
+ s2 = peg$f44(s1);
1891
2063
  if (s2) {
1892
2064
  s2 = undefined;
1893
2065
  } else {
@@ -1895,7 +2067,7 @@ function peg$parse(input, options) {
1895
2067
  }
1896
2068
  if (s2 !== peg$FAILED) {
1897
2069
  peg$savedPos = s0;
1898
- s0 = peg$f43(s1);
2070
+ s0 = peg$f45(s1);
1899
2071
  } else {
1900
2072
  peg$currPos = s0;
1901
2073
  s0 = peg$FAILED;
@@ -1928,7 +2100,7 @@ function peg$parse(input, options) {
1928
2100
  }
1929
2101
  }
1930
2102
  peg$savedPos = peg$currPos;
1931
- s2 = peg$f44(s1);
2103
+ s2 = peg$f46(s1);
1932
2104
  if (s2) {
1933
2105
  s2 = undefined;
1934
2106
  } else {
@@ -2139,7 +2311,7 @@ function peg$parse(input, options) {
2139
2311
  let s0, s1, s2, s3;
2140
2312
  s0 = peg$currPos;
2141
2313
  peg$savedPos = peg$currPos;
2142
- s1 = peg$f45();
2314
+ s1 = peg$f47();
2143
2315
  if (s1) {
2144
2316
  s1 = undefined;
2145
2317
  } else {
@@ -2154,7 +2326,7 @@ function peg$parse(input, options) {
2154
2326
  } else {
2155
2327
  s3 = peg$FAILED;
2156
2328
  if (peg$silentFails === 0) {
2157
- peg$fail(peg$e3);
2329
+ peg$fail(peg$e4);
2158
2330
  }
2159
2331
  }
2160
2332
  peg$silentFails--;
@@ -2187,7 +2359,7 @@ function peg$parse(input, options) {
2187
2359
  } else {
2188
2360
  s1 = peg$FAILED;
2189
2361
  if (peg$silentFails === 0) {
2190
- peg$fail(peg$e6);
2362
+ peg$fail(peg$e2);
2191
2363
  }
2192
2364
  }
2193
2365
  peg$silentFails--;
@@ -2264,12 +2436,17 @@ function peg$parse(input, options) {
2264
2436
  let indentationStack = [0];
2265
2437
  let baseIndentation = null;
2266
2438
  let contextStack = [];
2439
+ let unreadableLines = new Set;
2267
2440
  function resetState() {
2268
2441
  indentationStack = [0];
2269
2442
  baseIndentation = null;
2270
2443
  contextStack = [];
2444
+ unreadableLines = new Set;
2271
2445
  return true;
2272
2446
  }
2447
+ function lineKey(position) {
2448
+ return contextStack.length > 0 ? -1 - position : position;
2449
+ }
2273
2450
  function enterNestedContext() {
2274
2451
  contextStack.push({ indentationStack, baseIndentation });
2275
2452
  indentationStack = [0];