chordsheetjs 9.0.0 → 9.0.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/lib/index.js CHANGED
@@ -41,8 +41,10 @@ $parcel$export(module.exports, "Ternary", () => $b6d84b168638423d$export$2e2bcd8
41
41
  $parcel$export(module.exports, "TextFormatter", () => $525b2331e4b0ed83$export$2e2bcd8739ae039);
42
42
  $parcel$export(module.exports, "UltimateGuitarParser", () => $db9c80925e255cd2$export$2e2bcd8739ae039);
43
43
  $parcel$export(module.exports, "templateHelpers", () => $376e205ced98486b$export$2e2bcd8739ae039);
44
+ $parcel$export(module.exports, "ABC", () => $af8d31735c159a26$export$92249c36c213e508);
44
45
  $parcel$export(module.exports, "CHORUS", () => $af8d31735c159a26$export$8db6c706fc9142b2);
45
46
  $parcel$export(module.exports, "INDETERMINATE", () => $af8d31735c159a26$export$c5a6fe907430212e);
47
+ $parcel$export(module.exports, "LILYPOND", () => $af8d31735c159a26$export$6a5a2eab72b6e3d);
46
48
  $parcel$export(module.exports, "NONE", () => $af8d31735c159a26$export$c53d0f541b41b88e);
47
49
  $parcel$export(module.exports, "NUMERIC", () => $af8d31735c159a26$export$4d318981b5a83836);
48
50
  $parcel$export(module.exports, "SOLFEGE", () => $af8d31735c159a26$export$539a6499f4711c57);
@@ -11065,6 +11067,8 @@ const $af8d31735c159a26$export$c5a6fe907430212e = "indeterminate";
11065
11067
  const $af8d31735c159a26$export$c53d0f541b41b88e = "none";
11066
11068
  const $af8d31735c159a26$export$f1c9dd0f5207dd5e = "tab";
11067
11069
  const $af8d31735c159a26$export$4b194284baed1659 = "verse";
11070
+ const $af8d31735c159a26$export$6a5a2eab72b6e3d = "ly";
11071
+ const $af8d31735c159a26$export$92249c36c213e508 = "abc";
11068
11072
  const $af8d31735c159a26$export$27c95a7104c1f7aa = "symbol";
11069
11073
  const $af8d31735c159a26$export$4d318981b5a83836 = "numeric";
11070
11074
  const $af8d31735c159a26$export$1321df9b16c30c6a = "numeral";
@@ -13706,6 +13710,7 @@ var $d454f4215ba01af2$export$2e2bcd8739ae039 = $d454f4215ba01af2$var$ChordLyrics
13706
13710
 
13707
13711
 
13708
13712
 
13713
+
13709
13714
  const $71c330be198ce421$export$a014e67b549cbef4 = {
13710
13715
  separator: ","
13711
13716
  };
@@ -13717,16 +13722,20 @@ class $71c330be198ce421$var$MetadataConfiguration {
13717
13722
  var $71c330be198ce421$export$2e2bcd8739ae039 = $71c330be198ce421$var$MetadataConfiguration;
13718
13723
 
13719
13724
 
13720
-
13725
+ const $bbcfd2c49e8e9957$export$f152539e8297cacc = (string)=>string;
13721
13726
  const $bbcfd2c49e8e9957$export$78c0028a34264234 = {
13722
13727
  evaluate: false,
13723
- metadata: {
13724
- separator: ","
13725
- },
13728
+ metadata: (0, $71c330be198ce421$export$a014e67b549cbef4),
13726
13729
  key: null,
13727
13730
  expandChorusDirective: false,
13728
13731
  useUnicodeModifiers: false,
13729
- normalizeChords: true
13732
+ normalizeChords: true,
13733
+ delegates: {
13734
+ abc: $bbcfd2c49e8e9957$export$f152539e8297cacc,
13735
+ ly: $bbcfd2c49e8e9957$export$f152539e8297cacc,
13736
+ tab: $bbcfd2c49e8e9957$export$f152539e8297cacc,
13737
+ grid: $bbcfd2c49e8e9957$export$f152539e8297cacc
13738
+ }
13730
13739
  };
13731
13740
  class $bbcfd2c49e8e9957$var$Configuration {
13732
13741
  constructor(configuration = $bbcfd2c49e8e9957$export$78c0028a34264234){
@@ -13734,13 +13743,20 @@ class $bbcfd2c49e8e9957$var$Configuration {
13734
13743
  ...$bbcfd2c49e8e9957$export$78c0028a34264234,
13735
13744
  ...configuration
13736
13745
  };
13737
- this.evaluate = !!mergedConfig.evaluate;
13738
- this.expandChorusDirective = !!mergedConfig.expandChorusDirective;
13739
- this.useUnicodeModifiers = !!mergedConfig.useUnicodeModifiers;
13740
- this.normalizeChords = !!mergedConfig.normalizeChords;
13746
+ this.evaluate = mergedConfig.evaluate;
13747
+ this.expandChorusDirective = mergedConfig.expandChorusDirective;
13748
+ this.useUnicodeModifiers = mergedConfig.useUnicodeModifiers;
13749
+ this.normalizeChords = mergedConfig.normalizeChords;
13741
13750
  this.metadata = new (0, $71c330be198ce421$export$2e2bcd8739ae039)(configuration.metadata);
13742
13751
  this.key = configuration.key ? (0, $bff5407e03fdc8ee$export$2e2bcd8739ae039).wrap(configuration.key) : null;
13743
- this.configuration = configuration;
13752
+ this.delegates = {
13753
+ ...$bbcfd2c49e8e9957$export$78c0028a34264234.delegates,
13754
+ ...configuration.delegates
13755
+ };
13756
+ this.configuration = {
13757
+ configuration: configuration,
13758
+ delegates: this.delegates
13759
+ };
13744
13760
  }
13745
13761
  get(key) {
13746
13762
  return (0, ($parcel$interopDefault($988mA$lodashget)))(this, key);
@@ -13768,7 +13784,7 @@ var $bbcfd2c49e8e9957$export$2e2bcd8739ae039 = $bbcfd2c49e8e9957$var$Configurati
13768
13784
  * @param {boolean} [configuration.useUnicodeModifiers=false] Whether or not to use unicode flat and sharp
13769
13785
  * symbols.
13770
13786
  * @param {boolean} [configuration.normalizeChords=true] Whether or not to automatically normalize chords
13771
- */ constructor(configuration = null){
13787
+ */ constructor(configuration = {}){
13772
13788
  this.configuration = new (0, $bbcfd2c49e8e9957$export$2e2bcd8739ae039)(configuration || {});
13773
13789
  }
13774
13790
  }
@@ -13801,18 +13817,22 @@ const $5e9ede69210ec54a$export$a29989082612d0d9 = "comment";
13801
13817
  const $5e9ede69210ec54a$export$98424633dc8c377f = "composer";
13802
13818
  const $5e9ede69210ec54a$export$4ab8c75045d12480 = "copyright";
13803
13819
  const $5e9ede69210ec54a$export$bacc88974c736870 = "duration";
13820
+ const $5e9ede69210ec54a$export$37c7b13f53af2469 = "end_of_abc";
13804
13821
  const $5e9ede69210ec54a$export$1c874e9780385ecd = "end_of_bridge";
13805
13822
  const $5e9ede69210ec54a$export$473c1a4819e5180b = "end_of_chorus";
13806
13823
  const $5e9ede69210ec54a$export$4b28ac1ae75aff60 = "end_of_grid";
13824
+ const $5e9ede69210ec54a$export$e3f6cdbd95b1f8f = "end_of_ly";
13807
13825
  const $5e9ede69210ec54a$export$66a0ef3ffeab32b7 = "end_of_tab";
13808
13826
  const $5e9ede69210ec54a$export$640d294ab83f9040 = "end_of_verse";
13809
13827
  const $5e9ede69210ec54a$export$7167c830cefcb6b5 = "key";
13810
13828
  const $5e9ede69210ec54a$export$430b1920f5feeae = "_key";
13811
13829
  const $5e9ede69210ec54a$export$a6901bd008617c61 = "lyricist";
13812
13830
  const $5e9ede69210ec54a$export$a1aa5ca2f265ee7f = "sorttitle";
13831
+ const $5e9ede69210ec54a$export$9e9edc166b8d0233 = "start_of_abc";
13813
13832
  const $5e9ede69210ec54a$export$3550cc87694d54e0 = "start_of_bridge";
13814
13833
  const $5e9ede69210ec54a$export$4f5168acae064e01 = "start_of_chorus";
13815
13834
  const $5e9ede69210ec54a$export$b7e6dcd848b88f43 = "start_of_grid";
13835
+ const $5e9ede69210ec54a$export$634ff7795b596e62 = "start_of_ly";
13816
13836
  const $5e9ede69210ec54a$export$8dd1111100e0e88d = "start_of_tab";
13817
13837
  const $5e9ede69210ec54a$export$deca399f8cd9b7dc = "start_of_verse";
13818
13838
  const $5e9ede69210ec54a$export$5895c693c74b9cf4 = "subtitle";
@@ -13876,12 +13896,16 @@ const $5e9ede69210ec54a$export$75d737e15c3fab80 = [
13876
13896
  $5e9ede69210ec54a$export$430b1920f5feeae
13877
13897
  ];
13878
13898
  const $5e9ede69210ec54a$var$SECTION_DELIMITERS = [
13899
+ $5e9ede69210ec54a$export$9e9edc166b8d0233,
13900
+ $5e9ede69210ec54a$export$37c7b13f53af2469,
13879
13901
  $5e9ede69210ec54a$export$3550cc87694d54e0,
13880
13902
  $5e9ede69210ec54a$export$1c874e9780385ecd,
13881
13903
  $5e9ede69210ec54a$export$4f5168acae064e01,
13882
13904
  $5e9ede69210ec54a$export$473c1a4819e5180b,
13883
13905
  $5e9ede69210ec54a$export$b7e6dcd848b88f43,
13884
13906
  $5e9ede69210ec54a$export$4b28ac1ae75aff60,
13907
+ $5e9ede69210ec54a$export$634ff7795b596e62,
13908
+ $5e9ede69210ec54a$export$e3f6cdbd95b1f8f,
13885
13909
  $5e9ede69210ec54a$export$8dd1111100e0e88d,
13886
13910
  $5e9ede69210ec54a$export$66a0ef3ffeab32b7,
13887
13911
  $5e9ede69210ec54a$export$deca399f8cd9b7dc,
@@ -13897,9 +13921,11 @@ const $5e9ede69210ec54a$var$INLINE_FONT_TAGS = [
13897
13921
  ];
13898
13922
  const $5e9ede69210ec54a$var$DIRECTIVES_WITH_RENDERABLE_LABEL = [
13899
13923
  $5e9ede69210ec54a$export$8db6c706fc9142b2,
13924
+ $5e9ede69210ec54a$export$9e9edc166b8d0233,
13900
13925
  $5e9ede69210ec54a$export$3550cc87694d54e0,
13901
13926
  $5e9ede69210ec54a$export$4f5168acae064e01,
13902
13927
  $5e9ede69210ec54a$export$b7e6dcd848b88f43,
13928
+ $5e9ede69210ec54a$export$634ff7795b596e62,
13903
13929
  $5e9ede69210ec54a$export$8dd1111100e0e88d,
13904
13930
  $5e9ede69210ec54a$export$deca399f8cd9b7dc
13905
13931
  ];
@@ -14152,9 +14178,9 @@ var $b6d84b168638423d$export$2e2bcd8739ae039 = $b6d84b168638423d$var$Ternary;
14152
14178
 
14153
14179
 
14154
14180
  class $e1378a714a1834c5$var$Literal extends (0, $da904aab90d40723$export$2e2bcd8739ae039) {
14155
- constructor(expression){
14181
+ constructor(string){
14156
14182
  super();
14157
- this.string = expression;
14183
+ this.string = string;
14158
14184
  }
14159
14185
  evaluate() {
14160
14186
  return this.string;
@@ -14485,6 +14511,8 @@ var $bc411321e9739719$export$2e2bcd8739ae039 = $bc411321e9739719$var$Line;
14485
14511
 
14486
14512
 
14487
14513
 
14514
+
14515
+
14488
14516
  /**
14489
14517
  * Represents a paragraph of lines in a chord sheet
14490
14518
  */ class $0c3420c6a3e8a9d7$var$Paragraph {
@@ -14492,6 +14520,34 @@ var $bc411321e9739719$export$2e2bcd8739ae039 = $bc411321e9739719$var$Line;
14492
14520
  this.lines.push(line);
14493
14521
  }
14494
14522
  /**
14523
+ * Indicates whether the paragraph only contains literals. If true, {@link contents} can be used to retrieve
14524
+ * the paragraph contents as one string where lines are separated by newlines.
14525
+ * @see {@link contents}
14526
+ * @returns {boolean}
14527
+ */ isLiteral() {
14528
+ return this.lines.every((line)=>line.items.every((item)=>{
14529
+ if (item instanceof (0, $e1378a714a1834c5$export$2e2bcd8739ae039)) return true;
14530
+ if (item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039) && item.isSectionDelimiter()) return true;
14531
+ return false;
14532
+ }));
14533
+ }
14534
+ /**
14535
+ * Returns the paragraph contents as one string where lines are separated by newlines
14536
+ * @returns {string}
14537
+ */ get contents() {
14538
+ return this.lines.filter((line)=>line.items.every((item)=>item instanceof (0, $e1378a714a1834c5$export$2e2bcd8739ae039))).map((line)=>line.items.map((item)=>item.string).join("")).join("\n");
14539
+ }
14540
+ /**
14541
+ * Returns the label of the paragraph. The label is the value of the first section delimiter tag
14542
+ * in the first line.
14543
+ * @returns {string|null}
14544
+ */ get label() {
14545
+ if (this.lines.length === 0) return null;
14546
+ const startTag = this.lines[0].items.find((item)=>item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039) && item.isSectionDelimiter());
14547
+ if (startTag) return startTag.value;
14548
+ return null;
14549
+ }
14550
+ /**
14495
14551
  * Tries to determine the common type for all lines. If the types for all lines are equal, it returns that type.
14496
14552
  * If not, it returns {@link INDETERMINATE}
14497
14553
  * @returns {string}
@@ -14852,16 +14908,20 @@ var $2f18b59f691a3b48$export$2e2bcd8739ae039 = $2f18b59f691a3b48$var$FontStack;
14852
14908
 
14853
14909
 
14854
14910
  const $6f653df65dfdf4ef$var$START_TAG_TO_SECTION_TYPE = {
14911
+ [(0, $5e9ede69210ec54a$export$9e9edc166b8d0233)]: (0, $af8d31735c159a26$export$92249c36c213e508),
14855
14912
  [(0, $5e9ede69210ec54a$export$3550cc87694d54e0)]: (0, $af8d31735c159a26$export$78d8c50e853acd10),
14856
14913
  [(0, $5e9ede69210ec54a$export$4f5168acae064e01)]: (0, $af8d31735c159a26$export$8db6c706fc9142b2),
14857
14914
  [(0, $5e9ede69210ec54a$export$b7e6dcd848b88f43)]: (0, $af8d31735c159a26$export$e2b0b9a5e613f348),
14915
+ [(0, $5e9ede69210ec54a$export$634ff7795b596e62)]: (0, $af8d31735c159a26$export$6a5a2eab72b6e3d),
14858
14916
  [(0, $5e9ede69210ec54a$export$8dd1111100e0e88d)]: (0, $af8d31735c159a26$export$f1c9dd0f5207dd5e),
14859
14917
  [(0, $5e9ede69210ec54a$export$deca399f8cd9b7dc)]: (0, $af8d31735c159a26$export$4b194284baed1659)
14860
14918
  };
14861
14919
  const $6f653df65dfdf4ef$var$END_TAG_TO_SECTION_TYPE = {
14920
+ [(0, $5e9ede69210ec54a$export$37c7b13f53af2469)]: (0, $af8d31735c159a26$export$92249c36c213e508),
14862
14921
  [(0, $5e9ede69210ec54a$export$1c874e9780385ecd)]: (0, $af8d31735c159a26$export$78d8c50e853acd10),
14863
14922
  [(0, $5e9ede69210ec54a$export$473c1a4819e5180b)]: (0, $af8d31735c159a26$export$8db6c706fc9142b2),
14864
14923
  [(0, $5e9ede69210ec54a$export$4b28ac1ae75aff60)]: (0, $af8d31735c159a26$export$e2b0b9a5e613f348),
14924
+ [(0, $5e9ede69210ec54a$export$e3f6cdbd95b1f8f)]: (0, $af8d31735c159a26$export$6a5a2eab72b6e3d),
14865
14925
  [(0, $5e9ede69210ec54a$export$66a0ef3ffeab32b7)]: (0, $af8d31735c159a26$export$f1c9dd0f5207dd5e),
14866
14926
  [(0, $5e9ede69210ec54a$export$640d294ab83f9040)]: (0, $af8d31735c159a26$export$4b194284baed1659)
14867
14927
  };
@@ -14974,7 +15034,7 @@ const $6f653df65dfdf4ef$var$END_TAG_TO_SECTION_TYPE = {
14974
15034
  return this.linesToParagraphs(this.lines);
14975
15035
  }
14976
15036
  /**
14977
- * The body paragraphs of the song, with any `{chorus}` tag expanded into the targetted chorus
15037
+ * The body paragraphs of the song, with any `{chorus}` tag expanded into the targeted chorus
14978
15038
  * @type {Paragraph[]}
14979
15039
  */ get expandedBodyParagraphs() {
14980
15040
  return this.selectRenderableItems(this.linesToParagraphs(this.lines.flatMap((line)=>this.expandLine(line))));
@@ -15036,7 +15096,7 @@ const $6f653df65dfdf4ef$var$END_TAG_TO_SECTION_TYPE = {
15036
15096
  this.sectionType = (0, $af8d31735c159a26$export$c53d0f541b41b88e);
15037
15097
  }
15038
15098
  checkCurrentSectionType(sectionType, tag) {
15039
- if (this.sectionType !== sectionType) this.addWarning(`Unexpected tag {${tag.originalName}, current section is: ${this.sectionType}`, tag);
15099
+ if (this.sectionType !== sectionType) this.addWarning(`Unexpected tag {${tag.originalName}}, current section is: ${this.sectionType}`, tag);
15040
15100
  }
15041
15101
  addWarning(message, { line: line, column: column }) {
15042
15102
  const warning = new (0, $ce1dd7d0f2cd2369$export$2e2bcd8739ae039)(message, line || null, column || null);
@@ -15105,14 +15165,15 @@ const $6f653df65dfdf4ef$var$END_TAG_TO_SECTION_TYPE = {
15105
15165
  * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing
15106
15166
  * @returns {Song} The transposed song
15107
15167
  */ transpose(delta, { normalizeChordSuffix: normalizeChordSuffix = false } = {}) {
15108
- const wrappedKey = (0, $bff5407e03fdc8ee$export$2e2bcd8739ae039).wrap(this.key);
15109
15168
  let transposedKey = null;
15110
- let song = this;
15111
- if (wrappedKey) {
15112
- transposedKey = wrappedKey.transpose(delta);
15113
- song = song.setKey(transposedKey.toString());
15114
- }
15169
+ const song = this;
15115
15170
  return song.mapItems((item)=>{
15171
+ if (item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039) && item.name === (0, $5e9ede69210ec54a$export$7167c830cefcb6b5)) {
15172
+ transposedKey = (0, $bff5407e03fdc8ee$export$2e2bcd8739ae039).wrapOrFail(item.value).transpose(delta);
15173
+ return item.set({
15174
+ value: transposedKey.toString()
15175
+ });
15176
+ }
15116
15177
  if (item instanceof (0, $d454f4215ba01af2$export$2e2bcd8739ae039)) return item.transpose(delta, transposedKey, {
15117
15178
  normalizeChordSuffix: normalizeChordSuffix
15118
15179
  });
@@ -15153,16 +15214,8 @@ const $6f653df65dfdf4ef$var$END_TAG_TO_SECTION_TYPE = {
15153
15214
  * @param {string} newKey The new key.
15154
15215
  * @returns {Song} The changed song
15155
15216
  */ changeKey(newKey) {
15156
- const transpose = this.getTransposeDistance(newKey);
15157
- const updatedSong = this.mapItems((item)=>{
15158
- if (item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039) && item.name === (0, $5e9ede69210ec54a$export$7167c830cefcb6b5)) return item.set({
15159
- value: newKey.toString()
15160
- });
15161
- if (item instanceof (0, $d454f4215ba01af2$export$2e2bcd8739ae039)) return item.transpose(transpose, newKey);
15162
- return item;
15163
- });
15164
- this.setKey(newKey.toString());
15165
- return updatedSong;
15217
+ const delta = this.getTransposeDistance(newKey);
15218
+ return this.transpose(delta);
15166
15219
  }
15167
15220
  getTransposeDistance(newKey) {
15168
15221
  const wrappedKey = (0, $bff5407e03fdc8ee$export$2e2bcd8739ae039).wrap(this.key);
@@ -15189,7 +15242,7 @@ Or set the song key before changing key:
15189
15242
  return updatedSong;
15190
15243
  }
15191
15244
  insertDirective(name, value, { after: after = null } = {}) {
15192
- const insertIndex = this.lines.findIndex((line)=>line.items.some((item)=>!(item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039)) || after && item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039) && item.name === after));
15245
+ const insertIndex = this.lines.findIndex((line)=>line.items.some((item)=>!(item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039)) || after && item.name === after));
15193
15246
  const newLine = new (0, $bc411321e9739719$export$2e2bcd8739ae039)();
15194
15247
  newLine.addTag(name, value);
15195
15248
  const clonedSong = this.clone();
@@ -15367,8 +15420,7 @@ const $1c14afc274b727b7$var$LINE = "line";
15367
15420
  parseAstComponent(astComponent) {
15368
15421
  if (!astComponent) return null;
15369
15422
  if (typeof astComponent === "string") return new (0, $e1378a714a1834c5$export$2e2bcd8739ae039)(astComponent);
15370
- const { type: type } = astComponent;
15371
- switch(type){
15423
+ switch(astComponent.type){
15372
15424
  case $1c14afc274b727b7$var$CHORD_SHEET:
15373
15425
  this.parseChordSheet(astComponent);
15374
15426
  break;
@@ -15380,19 +15432,23 @@ const $1c14afc274b727b7$var$LINE = "line";
15380
15432
  return this.parseComment(astComponent);
15381
15433
  case $1c14afc274b727b7$var$TERNARY:
15382
15434
  return this.parseTernary(astComponent);
15435
+ case $1c14afc274b727b7$var$LINE:
15436
+ this.parseLine(astComponent);
15437
+ break;
15383
15438
  default:
15384
- console.warn(`Unhandled AST component "${type}"`, astComponent);
15439
+ console.warn(`Unhandled AST component "${astComponent.type}"`, astComponent);
15385
15440
  }
15386
15441
  return null;
15387
15442
  }
15388
15443
  parseChordSheet(astComponent) {
15389
15444
  const { lines: lines } = astComponent;
15390
15445
  this.song = new (0, $6f653df65dfdf4ef$export$2e2bcd8739ae039)();
15391
- lines.forEach((line)=>this.parseLine(line));
15446
+ lines.forEach((line)=>this.parseAstComponent(line));
15392
15447
  }
15393
15448
  parseLine(astComponent) {
15394
15449
  const { items: items } = astComponent;
15395
15450
  this.song.addLine();
15451
+ if (typeof items.forEach !== "function") console.log("items:", items);
15396
15452
  items.forEach((item)=>{
15397
15453
  const parsedItem = this.parseAstComponent(item);
15398
15454
  this.song.addItem(parsedItem);
@@ -15571,108 +15627,156 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15571
15627
  lines: [
15572
15628
  ...lines,
15573
15629
  trailingLine
15574
- ]
15630
+ ].flat()
15575
15631
  };
15576
15632
  };
15577
- const peg$c1 = function(line) {
15633
+ const peg$c1 = function(component) {
15634
+ return component;
15635
+ };
15636
+ const peg$c2 = function(startTag, content, endTag) {
15637
+ return buildSection("tab", startTag, endTag, content);
15638
+ };
15639
+ const peg$c3 = "{";
15640
+ const peg$c4 = peg$literalExpectation("{", false);
15641
+ const peg$c5 = "sot";
15642
+ const peg$c6 = peg$literalExpectation("sot", false);
15643
+ const peg$c7 = "start_of_tab";
15644
+ const peg$c8 = peg$literalExpectation("start_of_tab", false);
15645
+ const peg$c9 = "}";
15646
+ const peg$c10 = peg$literalExpectation("}", false);
15647
+ const peg$c11 = function(tagName, tagColonWithValue) {
15648
+ return buildTag(tagName, tagColonWithValue, location());
15649
+ };
15650
+ const peg$c12 = "eot";
15651
+ const peg$c13 = peg$literalExpectation("eot", false);
15652
+ const peg$c14 = "end_of_tab";
15653
+ const peg$c15 = peg$literalExpectation("end_of_tab", false);
15654
+ const peg$c16 = function(tagName) {
15655
+ return buildTag(tagName, null, location());
15656
+ };
15657
+ const peg$c17 = function(startTag, content, endTag) {
15658
+ return buildSection("abc", startTag, endTag, content);
15659
+ };
15660
+ const peg$c18 = "start_of_abc";
15661
+ const peg$c19 = peg$literalExpectation("start_of_abc", false);
15662
+ const peg$c20 = "end_of_abc";
15663
+ const peg$c21 = peg$literalExpectation("end_of_abc", false);
15664
+ const peg$c22 = function(startTag, content, endTag) {
15665
+ return buildSection("ly", startTag, endTag, content);
15666
+ };
15667
+ const peg$c23 = "start_of_ly";
15668
+ const peg$c24 = peg$literalExpectation("start_of_ly", false);
15669
+ const peg$c25 = "end_of_ly";
15670
+ const peg$c26 = peg$literalExpectation("end_of_ly", false);
15671
+ const peg$c27 = function(name) {
15672
+ return buildTag(name, null, location());
15673
+ };
15674
+ const peg$c28 = function(startTag, content, endTag) {
15675
+ return buildSection("grid", startTag, endTag, content);
15676
+ };
15677
+ const peg$c29 = "sog";
15678
+ const peg$c30 = peg$literalExpectation("sog", false);
15679
+ const peg$c31 = "start_of_grid";
15680
+ const peg$c32 = peg$literalExpectation("start_of_grid", false);
15681
+ const peg$c33 = "eog";
15682
+ const peg$c34 = peg$literalExpectation("eog", false);
15683
+ const peg$c35 = "end_of_grid";
15684
+ const peg$c36 = peg$literalExpectation("end_of_grid", false);
15685
+ const peg$c37 = peg$anyExpectation();
15686
+ const peg$c38 = function(line) {
15578
15687
  return line;
15579
15688
  };
15580
- const peg$c2 = function(lyrics, tokens, chords, comment) {
15581
- return {
15582
- type: "line",
15583
- items: [
15584
- lyrics ? {
15585
- type: "chordLyricsPair",
15586
- chords: "",
15587
- lyrics: lyrics
15588
- } : null,
15589
- ...tokens,
15590
- chords ? {
15591
- type: "chordLyricsPair",
15592
- chords: chords,
15593
- lyrics: ""
15594
- } : null,
15595
- comment ? {
15596
- type: "comment",
15597
- comment: comment
15598
- } : null
15599
- ].filter((x)=>x)
15600
- };
15689
+ const peg$c39 = function(lyrics, tokens, chords, comment) {
15690
+ return buildLine([
15691
+ lyrics ? {
15692
+ type: "chordLyricsPair",
15693
+ chords: "",
15694
+ lyrics: lyrics
15695
+ } : null,
15696
+ ...tokens,
15697
+ chords ? {
15698
+ type: "chordLyricsPair",
15699
+ chords: chords,
15700
+ lyrics: ""
15701
+ } : null,
15702
+ comment ? {
15703
+ type: "comment",
15704
+ comment: comment
15705
+ } : null
15706
+ ].filter((x)=>x));
15601
15707
  };
15602
- const peg$c3 = function(lyrics) {
15708
+ const peg$c40 = function(lyrics) {
15603
15709
  return {
15604
15710
  type: "chordLyricsPair",
15605
15711
  chords: "",
15606
15712
  lyrics: lyrics
15607
15713
  };
15608
15714
  };
15609
- const peg$c4 = "#";
15610
- const peg$c5 = peg$literalExpectation("#", false);
15611
- const peg$c6 = /^[^\r\n]/;
15612
- const peg$c7 = peg$classExpectation([
15715
+ const peg$c41 = "#";
15716
+ const peg$c42 = peg$literalExpectation("#", false);
15717
+ const peg$c43 = /^[^\r\n]/;
15718
+ const peg$c44 = peg$classExpectation([
15613
15719
  "\r",
15614
15720
  "\n"
15615
15721
  ], true, false);
15616
- const peg$c8 = function(comment) {
15722
+ const peg$c45 = function(comment) {
15617
15723
  return comment;
15618
15724
  };
15619
- const peg$c9 = function(annotation, lyrics, space) {
15725
+ const peg$c46 = function(annotation, lyrics, space) {
15620
15726
  return {
15621
15727
  type: "chordLyricsPair",
15622
15728
  annotation: annotation || "",
15623
15729
  lyrics: lyrics + (space || "")
15624
15730
  };
15625
15731
  };
15626
- const peg$c10 = function(chords, lyrics, space) {
15732
+ const peg$c47 = function(chords, lyrics, space) {
15627
15733
  return {
15628
15734
  type: "chordLyricsPair",
15629
15735
  chords: chords || "",
15630
15736
  lyrics: lyrics + (space || "")
15631
15737
  };
15632
15738
  };
15633
- const peg$c11 = function(lyrics) {
15739
+ const peg$c48 = function(lyrics) {
15634
15740
  return lyrics.map((c)=>c.char || c).join("");
15635
15741
  };
15636
- const peg$c12 = "[*";
15637
- const peg$c13 = peg$literalExpectation("[*", false);
15638
- const peg$c14 = "]";
15639
- const peg$c15 = peg$literalExpectation("]", false);
15640
- const peg$c16 = function(annotation) {
15742
+ const peg$c49 = "[*";
15743
+ const peg$c50 = peg$literalExpectation("[*", false);
15744
+ const peg$c51 = "]";
15745
+ const peg$c52 = peg$literalExpectation("]", false);
15746
+ const peg$c53 = function(annotation) {
15641
15747
  return annotation.map((c)=>c.char || c).join("");
15642
15748
  };
15643
- const peg$c17 = "[";
15644
- const peg$c18 = peg$literalExpectation("[", false);
15645
- const peg$c19 = function(chords) {
15749
+ const peg$c54 = "[";
15750
+ const peg$c55 = peg$literalExpectation("[", false);
15751
+ const peg$c56 = function(chords) {
15646
15752
  return chords.map((c)=>c.char || c).join("");
15647
15753
  };
15648
- const peg$c20 = /^[^\]\r\n]/;
15649
- const peg$c21 = peg$classExpectation([
15754
+ const peg$c57 = /^[^\]\r\n]/;
15755
+ const peg$c58 = peg$classExpectation([
15650
15756
  "]",
15651
15757
  "\r",
15652
15758
  "\n"
15653
15759
  ], true, false);
15654
- const peg$c22 = "\\";
15655
- const peg$c23 = peg$literalExpectation("\\", false);
15656
- const peg$c24 = function() {
15760
+ const peg$c59 = "\\";
15761
+ const peg$c60 = peg$literalExpectation("\\", false);
15762
+ const peg$c61 = function() {
15657
15763
  return {
15658
15764
  type: "char",
15659
15765
  char: "\\"
15660
15766
  };
15661
15767
  };
15662
- const peg$c25 = function() {
15768
+ const peg$c62 = function() {
15663
15769
  return {
15664
15770
  type: "char",
15665
15771
  char: "]"
15666
15772
  };
15667
15773
  };
15668
- const peg$c26 = function(sequence) {
15774
+ const peg$c63 = function(sequence) {
15669
15775
  return sequence;
15670
15776
  };
15671
- const peg$c27 = "%{";
15672
- const peg$c28 = peg$literalExpectation("%{", false);
15673
- const peg$c29 = "}";
15674
- const peg$c30 = peg$literalExpectation("}", false);
15675
- const peg$c31 = function(variableName, valueTest, expressions) {
15777
+ const peg$c64 = "%{";
15778
+ const peg$c65 = peg$literalExpectation("%{", false);
15779
+ const peg$c66 = function(variableName, valueTest, expressions) {
15676
15780
  return {
15677
15781
  type: "ternary",
15678
15782
  variable: variableName.length > 0 ? variableName : null,
@@ -15681,14 +15785,14 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15681
15785
  location: location().start
15682
15786
  };
15683
15787
  };
15684
- const peg$c32 = "=";
15685
- const peg$c33 = peg$literalExpectation("=", false);
15686
- const peg$c34 = function(testValue) {
15788
+ const peg$c67 = "=";
15789
+ const peg$c68 = peg$literalExpectation("=", false);
15790
+ const peg$c69 = function(testValue) {
15687
15791
  return testValue;
15688
15792
  };
15689
- const peg$c35 = "|";
15690
- const peg$c36 = peg$literalExpectation("|", false);
15691
- const peg$c37 = function(trueExpression, falseExpression) {
15793
+ const peg$c70 = "|";
15794
+ const peg$c71 = peg$literalExpectation("|", false);
15795
+ const peg$c72 = function(trueExpression, falseExpression) {
15692
15796
  return {
15693
15797
  type: "ternary",
15694
15798
  trueExpression: trueExpression,
@@ -15696,11 +15800,11 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15696
15800
  location: location().start
15697
15801
  };
15698
15802
  };
15699
- const peg$c38 = function(falseExpression) {
15803
+ const peg$c73 = function(falseExpression) {
15700
15804
  return falseExpression;
15701
15805
  };
15702
- const peg$c39 = /^[a-zA-Z0-9\-_]/;
15703
- const peg$c40 = peg$classExpectation([
15806
+ const peg$c74 = /^[a-zA-Z0-9\-_]/;
15807
+ const peg$c75 = peg$classExpectation([
15704
15808
  [
15705
15809
  "a",
15706
15810
  "z"
@@ -15716,26 +15820,26 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15716
15820
  "-",
15717
15821
  "_"
15718
15822
  ], false, false);
15719
- const peg$c41 = function() {
15823
+ const peg$c76 = function() {
15720
15824
  return {
15721
15825
  type: "char",
15722
15826
  char: "]"
15723
15827
  };
15724
15828
  };
15725
- const peg$c42 = function() {
15829
+ const peg$c77 = function() {
15726
15830
  return {
15727
15831
  type: "char",
15728
15832
  char: "|"
15729
15833
  };
15730
15834
  };
15731
- const peg$c43 = function() {
15835
+ const peg$c78 = function() {
15732
15836
  return {
15733
15837
  type: "char",
15734
15838
  char: "}"
15735
15839
  };
15736
15840
  };
15737
- const peg$c44 = /^[^|[\]\\{}%#\r\n\t ]/;
15738
- const peg$c45 = peg$classExpectation([
15841
+ const peg$c79 = /^[^|[\]\\{}%#\r\n\t ]/;
15842
+ const peg$c80 = peg$classExpectation([
15739
15843
  "|",
15740
15844
  "[",
15741
15845
  "]",
@@ -15749,41 +15853,39 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15749
15853
  " ",
15750
15854
  " "
15751
15855
  ], true, false);
15752
- const peg$c46 = function() {
15856
+ const peg$c81 = function() {
15753
15857
  return {
15754
15858
  type: "char",
15755
15859
  char: "\\"
15756
15860
  };
15757
15861
  };
15758
- const peg$c47 = function() {
15862
+ const peg$c82 = function() {
15759
15863
  return {
15760
15864
  type: "char",
15761
15865
  char: "["
15762
15866
  };
15763
15867
  };
15764
- const peg$c48 = "{";
15765
- const peg$c49 = peg$literalExpectation("{", false);
15766
- const peg$c50 = function() {
15868
+ const peg$c83 = function() {
15767
15869
  return {
15768
15870
  type: "char",
15769
15871
  char: "{"
15770
15872
  };
15771
15873
  };
15772
- const peg$c51 = "%";
15773
- const peg$c52 = peg$literalExpectation("%", false);
15774
- const peg$c53 = function() {
15874
+ const peg$c84 = "%";
15875
+ const peg$c85 = peg$literalExpectation("%", false);
15876
+ const peg$c86 = function() {
15775
15877
  return {
15776
15878
  type: "char",
15777
15879
  char: "%"
15778
15880
  };
15779
15881
  };
15780
- const peg$c54 = function() {
15882
+ const peg$c87 = function() {
15781
15883
  return {
15782
15884
  type: "char",
15783
15885
  char: "#"
15784
15886
  };
15785
15887
  };
15786
- const peg$c55 = function(tagName, tagColonWithValue) {
15888
+ const peg$c88 = function(tagName, tagColonWithValue) {
15787
15889
  return {
15788
15890
  type: "tag",
15789
15891
  name: tagName,
@@ -15791,13 +15893,13 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15791
15893
  location: location().start
15792
15894
  };
15793
15895
  };
15794
- const peg$c56 = ":";
15795
- const peg$c57 = peg$literalExpectation(":", false);
15796
- const peg$c58 = function(tagValue) {
15896
+ const peg$c89 = ":";
15897
+ const peg$c90 = peg$literalExpectation(":", false);
15898
+ const peg$c91 = function(tagValue) {
15797
15899
  return tagValue.map((c)=>c.char || c).join("");
15798
15900
  };
15799
- const peg$c59 = /^[a-zA-Z\-_]/;
15800
- const peg$c60 = peg$classExpectation([
15901
+ const peg$c92 = /^[a-zA-Z\-_]/;
15902
+ const peg$c93 = peg$classExpectation([
15801
15903
  [
15802
15904
  "a",
15803
15905
  "z"
@@ -15809,31 +15911,31 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15809
15911
  "-",
15810
15912
  "_"
15811
15913
  ], false, false);
15812
- const peg$c61 = /^[^}\\\r\n]/;
15813
- const peg$c62 = peg$classExpectation([
15914
+ const peg$c94 = /^[^}\\\r\n]/;
15915
+ const peg$c95 = peg$classExpectation([
15814
15916
  "}",
15815
15917
  "\\",
15816
15918
  "\r",
15817
15919
  "\n"
15818
15920
  ], true, false);
15819
- const peg$c63 = peg$otherExpectation("whitespace");
15820
- const peg$c64 = /^[ \t\n\r]/;
15821
- const peg$c65 = peg$classExpectation([
15921
+ const peg$c96 = peg$otherExpectation("whitespace");
15922
+ const peg$c97 = /^[ \t\n\r]/;
15923
+ const peg$c98 = peg$classExpectation([
15822
15924
  " ",
15823
15925
  " ",
15824
15926
  "\n",
15825
15927
  "\r"
15826
15928
  ], false, false);
15827
- const peg$c66 = peg$otherExpectation("space");
15828
- const peg$c67 = /^[ \t]/;
15829
- const peg$c68 = peg$classExpectation([
15929
+ const peg$c99 = peg$otherExpectation("space");
15930
+ const peg$c100 = /^[ \t]/;
15931
+ const peg$c101 = peg$classExpectation([
15830
15932
  " ",
15831
15933
  " "
15832
15934
  ], false, false);
15833
- const peg$c69 = "\n";
15834
- const peg$c70 = peg$literalExpectation("\n", false);
15835
- const peg$c71 = "\r";
15836
- const peg$c72 = peg$literalExpectation("\r", false);
15935
+ const peg$c102 = "\n";
15936
+ const peg$c103 = peg$literalExpectation("\n", false);
15937
+ const peg$c104 = "\r";
15938
+ const peg$c105 = peg$literalExpectation("\r", false);
15837
15939
  let peg$currPos = 0;
15838
15940
  let peg$savedPos = 0;
15839
15941
  const peg$posDetailsCache = [
@@ -15916,57 +16018,991 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15916
16018
  } else details.column++;
15917
16019
  p++;
15918
16020
  }
15919
- peg$posDetailsCache[pos] = details;
15920
- return details;
16021
+ peg$posDetailsCache[pos] = details;
16022
+ return details;
16023
+ }
16024
+ }
16025
+ function peg$computeLocation(startPos, endPos) {
16026
+ const startPosDetails = peg$computePosDetails(startPos);
16027
+ const endPosDetails = peg$computePosDetails(endPos);
16028
+ return {
16029
+ source: peg$source,
16030
+ start: {
16031
+ offset: startPos,
16032
+ line: startPosDetails.line,
16033
+ column: startPosDetails.column
16034
+ },
16035
+ end: {
16036
+ offset: endPos,
16037
+ line: endPosDetails.line,
16038
+ column: endPosDetails.column
16039
+ }
16040
+ };
16041
+ }
16042
+ function peg$fail(expected1) {
16043
+ if (peg$currPos < peg$maxFailPos) return;
16044
+ if (peg$currPos > peg$maxFailPos) {
16045
+ peg$maxFailPos = peg$currPos;
16046
+ peg$maxFailExpected = [];
16047
+ }
16048
+ peg$maxFailExpected.push(expected1);
16049
+ }
16050
+ function peg$buildSimpleError(message, location1) {
16051
+ return new $1a506a341538d943$export$628c65c376ead699(message, [], "", location1);
16052
+ }
16053
+ function peg$buildStructuredError(expected1, found, location1) {
16054
+ return new $1a506a341538d943$export$628c65c376ead699($1a506a341538d943$export$628c65c376ead699.buildMessage(expected1, found), expected1, found, location1);
16055
+ }
16056
+ function peg$parseChordSheet() {
16057
+ let s0, s1, s2;
16058
+ s0 = peg$currPos;
16059
+ s1 = [];
16060
+ s2 = peg$parseComponentWithNewline();
16061
+ while(s2 !== peg$FAILED){
16062
+ s1.push(s2);
16063
+ s2 = peg$parseComponentWithNewline();
16064
+ }
16065
+ if (s1 !== peg$FAILED) {
16066
+ s2 = peg$parseComponent();
16067
+ if (s2 === peg$FAILED) s2 = null;
16068
+ if (s2 !== peg$FAILED) {
16069
+ peg$savedPos = s0;
16070
+ s1 = peg$c0(s1, s2);
16071
+ s0 = s1;
16072
+ } else {
16073
+ peg$currPos = s0;
16074
+ s0 = peg$FAILED;
16075
+ }
16076
+ } else {
16077
+ peg$currPos = s0;
16078
+ s0 = peg$FAILED;
16079
+ }
16080
+ return s0;
16081
+ }
16082
+ function peg$parseComponentWithNewline() {
16083
+ let s0, s1, s2;
16084
+ s0 = peg$currPos;
16085
+ s1 = peg$parseComponent();
16086
+ if (s1 !== peg$FAILED) {
16087
+ s2 = peg$parseNewLine();
16088
+ if (s2 !== peg$FAILED) {
16089
+ peg$savedPos = s0;
16090
+ s1 = peg$c1(s1);
16091
+ s0 = s1;
16092
+ } else {
16093
+ peg$currPos = s0;
16094
+ s0 = peg$FAILED;
16095
+ }
16096
+ } else {
16097
+ peg$currPos = s0;
16098
+ s0 = peg$FAILED;
16099
+ }
16100
+ return s0;
16101
+ }
16102
+ function peg$parseComponent() {
16103
+ let s0;
16104
+ s0 = peg$parseSection();
16105
+ if (s0 === peg$FAILED) s0 = peg$parseLine();
16106
+ return s0;
16107
+ }
16108
+ function peg$parseSection() {
16109
+ let s0;
16110
+ s0 = peg$parseABCSection();
16111
+ if (s0 === peg$FAILED) {
16112
+ s0 = peg$parseGridSection();
16113
+ if (s0 === peg$FAILED) {
16114
+ s0 = peg$parseLYSection();
16115
+ if (s0 === peg$FAILED) s0 = peg$parseTabSection();
16116
+ }
16117
+ }
16118
+ return s0;
16119
+ }
16120
+ function peg$parseTabSection() {
16121
+ let s0, s1, s2, s3, s4, s5, s6, s7;
16122
+ s0 = peg$currPos;
16123
+ s1 = peg$parseTabStartTag();
16124
+ if (s1 !== peg$FAILED) {
16125
+ s2 = peg$parseNewLine();
16126
+ if (s2 !== peg$FAILED) {
16127
+ s3 = peg$currPos;
16128
+ s4 = [];
16129
+ s5 = peg$currPos;
16130
+ s6 = peg$currPos;
16131
+ peg$silentFails++;
16132
+ s7 = peg$parseTabEndTag();
16133
+ peg$silentFails--;
16134
+ if (s7 === peg$FAILED) s6 = undefined;
16135
+ else {
16136
+ peg$currPos = s6;
16137
+ s6 = peg$FAILED;
16138
+ }
16139
+ if (s6 !== peg$FAILED) {
16140
+ s7 = peg$parseSectionCharacter();
16141
+ if (s7 !== peg$FAILED) {
16142
+ s6 = [
16143
+ s6,
16144
+ s7
16145
+ ];
16146
+ s5 = s6;
16147
+ } else {
16148
+ peg$currPos = s5;
16149
+ s5 = peg$FAILED;
16150
+ }
16151
+ } else {
16152
+ peg$currPos = s5;
16153
+ s5 = peg$FAILED;
16154
+ }
16155
+ while(s5 !== peg$FAILED){
16156
+ s4.push(s5);
16157
+ s5 = peg$currPos;
16158
+ s6 = peg$currPos;
16159
+ peg$silentFails++;
16160
+ s7 = peg$parseTabEndTag();
16161
+ peg$silentFails--;
16162
+ if (s7 === peg$FAILED) s6 = undefined;
16163
+ else {
16164
+ peg$currPos = s6;
16165
+ s6 = peg$FAILED;
16166
+ }
16167
+ if (s6 !== peg$FAILED) {
16168
+ s7 = peg$parseSectionCharacter();
16169
+ if (s7 !== peg$FAILED) {
16170
+ s6 = [
16171
+ s6,
16172
+ s7
16173
+ ];
16174
+ s5 = s6;
16175
+ } else {
16176
+ peg$currPos = s5;
16177
+ s5 = peg$FAILED;
16178
+ }
16179
+ } else {
16180
+ peg$currPos = s5;
16181
+ s5 = peg$FAILED;
16182
+ }
16183
+ }
16184
+ if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
16185
+ else s3 = s4;
16186
+ if (s3 !== peg$FAILED) {
16187
+ s4 = peg$parseTabEndTag();
16188
+ if (s4 !== peg$FAILED) {
16189
+ peg$savedPos = s0;
16190
+ s1 = peg$c2(s1, s3, s4);
16191
+ s0 = s1;
16192
+ } else {
16193
+ peg$currPos = s0;
16194
+ s0 = peg$FAILED;
16195
+ }
16196
+ } else {
16197
+ peg$currPos = s0;
16198
+ s0 = peg$FAILED;
16199
+ }
16200
+ } else {
16201
+ peg$currPos = s0;
16202
+ s0 = peg$FAILED;
16203
+ }
16204
+ } else {
16205
+ peg$currPos = s0;
16206
+ s0 = peg$FAILED;
16207
+ }
16208
+ return s0;
16209
+ }
16210
+ function peg$parseTabStartTag() {
16211
+ let s0, s1, s2, s3, s4, s5, s6, s7;
16212
+ s0 = peg$currPos;
16213
+ if (input.charCodeAt(peg$currPos) === 123) {
16214
+ s1 = peg$c3;
16215
+ peg$currPos++;
16216
+ } else {
16217
+ s1 = peg$FAILED;
16218
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16219
+ }
16220
+ if (s1 !== peg$FAILED) {
16221
+ s2 = peg$parse_();
16222
+ if (s2 !== peg$FAILED) {
16223
+ if (input.substr(peg$currPos, 3) === peg$c5) {
16224
+ s3 = peg$c5;
16225
+ peg$currPos += 3;
16226
+ } else {
16227
+ s3 = peg$FAILED;
16228
+ if (peg$silentFails === 0) peg$fail(peg$c6);
16229
+ }
16230
+ if (s3 === peg$FAILED) {
16231
+ if (input.substr(peg$currPos, 12) === peg$c7) {
16232
+ s3 = peg$c7;
16233
+ peg$currPos += 12;
16234
+ } else {
16235
+ s3 = peg$FAILED;
16236
+ if (peg$silentFails === 0) peg$fail(peg$c8);
16237
+ }
16238
+ }
16239
+ if (s3 !== peg$FAILED) {
16240
+ s4 = peg$parse_();
16241
+ if (s4 !== peg$FAILED) {
16242
+ s5 = peg$parseTagColonWithValue();
16243
+ if (s5 === peg$FAILED) s5 = null;
16244
+ if (s5 !== peg$FAILED) {
16245
+ s6 = peg$parse_();
16246
+ if (s6 !== peg$FAILED) {
16247
+ if (input.charCodeAt(peg$currPos) === 125) {
16248
+ s7 = peg$c9;
16249
+ peg$currPos++;
16250
+ } else {
16251
+ s7 = peg$FAILED;
16252
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16253
+ }
16254
+ if (s7 !== peg$FAILED) {
16255
+ peg$savedPos = s0;
16256
+ s1 = peg$c11(s3, s5);
16257
+ s0 = s1;
16258
+ } else {
16259
+ peg$currPos = s0;
16260
+ s0 = peg$FAILED;
16261
+ }
16262
+ } else {
16263
+ peg$currPos = s0;
16264
+ s0 = peg$FAILED;
16265
+ }
16266
+ } else {
16267
+ peg$currPos = s0;
16268
+ s0 = peg$FAILED;
16269
+ }
16270
+ } else {
16271
+ peg$currPos = s0;
16272
+ s0 = peg$FAILED;
16273
+ }
16274
+ } else {
16275
+ peg$currPos = s0;
16276
+ s0 = peg$FAILED;
16277
+ }
16278
+ } else {
16279
+ peg$currPos = s0;
16280
+ s0 = peg$FAILED;
16281
+ }
16282
+ } else {
16283
+ peg$currPos = s0;
16284
+ s0 = peg$FAILED;
16285
+ }
16286
+ return s0;
16287
+ }
16288
+ function peg$parseTabEndTag() {
16289
+ let s0, s1, s2, s3, s4, s5;
16290
+ s0 = peg$currPos;
16291
+ if (input.charCodeAt(peg$currPos) === 123) {
16292
+ s1 = peg$c3;
16293
+ peg$currPos++;
16294
+ } else {
16295
+ s1 = peg$FAILED;
16296
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16297
+ }
16298
+ if (s1 !== peg$FAILED) {
16299
+ s2 = peg$parse_();
16300
+ if (s2 !== peg$FAILED) {
16301
+ if (input.substr(peg$currPos, 3) === peg$c12) {
16302
+ s3 = peg$c12;
16303
+ peg$currPos += 3;
16304
+ } else {
16305
+ s3 = peg$FAILED;
16306
+ if (peg$silentFails === 0) peg$fail(peg$c13);
16307
+ }
16308
+ if (s3 === peg$FAILED) {
16309
+ if (input.substr(peg$currPos, 10) === peg$c14) {
16310
+ s3 = peg$c14;
16311
+ peg$currPos += 10;
16312
+ } else {
16313
+ s3 = peg$FAILED;
16314
+ if (peg$silentFails === 0) peg$fail(peg$c15);
16315
+ }
16316
+ }
16317
+ if (s3 !== peg$FAILED) {
16318
+ s4 = peg$parse_();
16319
+ if (s4 !== peg$FAILED) {
16320
+ if (input.charCodeAt(peg$currPos) === 125) {
16321
+ s5 = peg$c9;
16322
+ peg$currPos++;
16323
+ } else {
16324
+ s5 = peg$FAILED;
16325
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16326
+ }
16327
+ if (s5 !== peg$FAILED) {
16328
+ peg$savedPos = s0;
16329
+ s1 = peg$c16(s3);
16330
+ s0 = s1;
16331
+ } else {
16332
+ peg$currPos = s0;
16333
+ s0 = peg$FAILED;
16334
+ }
16335
+ } else {
16336
+ peg$currPos = s0;
16337
+ s0 = peg$FAILED;
16338
+ }
16339
+ } else {
16340
+ peg$currPos = s0;
16341
+ s0 = peg$FAILED;
16342
+ }
16343
+ } else {
16344
+ peg$currPos = s0;
16345
+ s0 = peg$FAILED;
16346
+ }
16347
+ } else {
16348
+ peg$currPos = s0;
16349
+ s0 = peg$FAILED;
16350
+ }
16351
+ return s0;
16352
+ }
16353
+ function peg$parseABCSection() {
16354
+ let s0, s1, s2, s3, s4, s5, s6, s7;
16355
+ s0 = peg$currPos;
16356
+ s1 = peg$parseABCStartTag();
16357
+ if (s1 !== peg$FAILED) {
16358
+ s2 = peg$parseNewLine();
16359
+ if (s2 !== peg$FAILED) {
16360
+ s3 = peg$currPos;
16361
+ s4 = [];
16362
+ s5 = peg$currPos;
16363
+ s6 = peg$currPos;
16364
+ peg$silentFails++;
16365
+ s7 = peg$parseABCEndTag();
16366
+ peg$silentFails--;
16367
+ if (s7 === peg$FAILED) s6 = undefined;
16368
+ else {
16369
+ peg$currPos = s6;
16370
+ s6 = peg$FAILED;
16371
+ }
16372
+ if (s6 !== peg$FAILED) {
16373
+ s7 = peg$parseSectionCharacter();
16374
+ if (s7 !== peg$FAILED) {
16375
+ s6 = [
16376
+ s6,
16377
+ s7
16378
+ ];
16379
+ s5 = s6;
16380
+ } else {
16381
+ peg$currPos = s5;
16382
+ s5 = peg$FAILED;
16383
+ }
16384
+ } else {
16385
+ peg$currPos = s5;
16386
+ s5 = peg$FAILED;
16387
+ }
16388
+ while(s5 !== peg$FAILED){
16389
+ s4.push(s5);
16390
+ s5 = peg$currPos;
16391
+ s6 = peg$currPos;
16392
+ peg$silentFails++;
16393
+ s7 = peg$parseABCEndTag();
16394
+ peg$silentFails--;
16395
+ if (s7 === peg$FAILED) s6 = undefined;
16396
+ else {
16397
+ peg$currPos = s6;
16398
+ s6 = peg$FAILED;
16399
+ }
16400
+ if (s6 !== peg$FAILED) {
16401
+ s7 = peg$parseSectionCharacter();
16402
+ if (s7 !== peg$FAILED) {
16403
+ s6 = [
16404
+ s6,
16405
+ s7
16406
+ ];
16407
+ s5 = s6;
16408
+ } else {
16409
+ peg$currPos = s5;
16410
+ s5 = peg$FAILED;
16411
+ }
16412
+ } else {
16413
+ peg$currPos = s5;
16414
+ s5 = peg$FAILED;
16415
+ }
16416
+ }
16417
+ if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
16418
+ else s3 = s4;
16419
+ if (s3 !== peg$FAILED) {
16420
+ s4 = peg$parseABCEndTag();
16421
+ if (s4 !== peg$FAILED) {
16422
+ peg$savedPos = s0;
16423
+ s1 = peg$c17(s1, s3, s4);
16424
+ s0 = s1;
16425
+ } else {
16426
+ peg$currPos = s0;
16427
+ s0 = peg$FAILED;
16428
+ }
16429
+ } else {
16430
+ peg$currPos = s0;
16431
+ s0 = peg$FAILED;
16432
+ }
16433
+ } else {
16434
+ peg$currPos = s0;
16435
+ s0 = peg$FAILED;
16436
+ }
16437
+ } else {
16438
+ peg$currPos = s0;
16439
+ s0 = peg$FAILED;
16440
+ }
16441
+ return s0;
16442
+ }
16443
+ function peg$parseABCStartTag() {
16444
+ let s0, s1, s2, s3, s4, s5, s6, s7;
16445
+ s0 = peg$currPos;
16446
+ if (input.charCodeAt(peg$currPos) === 123) {
16447
+ s1 = peg$c3;
16448
+ peg$currPos++;
16449
+ } else {
16450
+ s1 = peg$FAILED;
16451
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16452
+ }
16453
+ if (s1 !== peg$FAILED) {
16454
+ s2 = peg$parse_();
16455
+ if (s2 !== peg$FAILED) {
16456
+ if (input.substr(peg$currPos, 12) === peg$c18) {
16457
+ s3 = peg$c18;
16458
+ peg$currPos += 12;
16459
+ } else {
16460
+ s3 = peg$FAILED;
16461
+ if (peg$silentFails === 0) peg$fail(peg$c19);
16462
+ }
16463
+ if (s3 !== peg$FAILED) {
16464
+ s4 = peg$parse_();
16465
+ if (s4 !== peg$FAILED) {
16466
+ s5 = peg$parseTagColonWithValue();
16467
+ if (s5 === peg$FAILED) s5 = null;
16468
+ if (s5 !== peg$FAILED) {
16469
+ s6 = peg$parse_();
16470
+ if (s6 !== peg$FAILED) {
16471
+ if (input.charCodeAt(peg$currPos) === 125) {
16472
+ s7 = peg$c9;
16473
+ peg$currPos++;
16474
+ } else {
16475
+ s7 = peg$FAILED;
16476
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16477
+ }
16478
+ if (s7 !== peg$FAILED) {
16479
+ peg$savedPos = s0;
16480
+ s1 = peg$c11(s3, s5);
16481
+ s0 = s1;
16482
+ } else {
16483
+ peg$currPos = s0;
16484
+ s0 = peg$FAILED;
16485
+ }
16486
+ } else {
16487
+ peg$currPos = s0;
16488
+ s0 = peg$FAILED;
16489
+ }
16490
+ } else {
16491
+ peg$currPos = s0;
16492
+ s0 = peg$FAILED;
16493
+ }
16494
+ } else {
16495
+ peg$currPos = s0;
16496
+ s0 = peg$FAILED;
16497
+ }
16498
+ } else {
16499
+ peg$currPos = s0;
16500
+ s0 = peg$FAILED;
16501
+ }
16502
+ } else {
16503
+ peg$currPos = s0;
16504
+ s0 = peg$FAILED;
16505
+ }
16506
+ } else {
16507
+ peg$currPos = s0;
16508
+ s0 = peg$FAILED;
16509
+ }
16510
+ return s0;
16511
+ }
16512
+ function peg$parseABCEndTag() {
16513
+ let s0, s1, s2, s3, s4, s5;
16514
+ s0 = peg$currPos;
16515
+ if (input.charCodeAt(peg$currPos) === 123) {
16516
+ s1 = peg$c3;
16517
+ peg$currPos++;
16518
+ } else {
16519
+ s1 = peg$FAILED;
16520
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16521
+ }
16522
+ if (s1 !== peg$FAILED) {
16523
+ s2 = peg$parse_();
16524
+ if (s2 !== peg$FAILED) {
16525
+ if (input.substr(peg$currPos, 10) === peg$c20) {
16526
+ s3 = peg$c20;
16527
+ peg$currPos += 10;
16528
+ } else {
16529
+ s3 = peg$FAILED;
16530
+ if (peg$silentFails === 0) peg$fail(peg$c21);
16531
+ }
16532
+ if (s3 !== peg$FAILED) {
16533
+ s4 = peg$parse_();
16534
+ if (s4 !== peg$FAILED) {
16535
+ if (input.charCodeAt(peg$currPos) === 125) {
16536
+ s5 = peg$c9;
16537
+ peg$currPos++;
16538
+ } else {
16539
+ s5 = peg$FAILED;
16540
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16541
+ }
16542
+ if (s5 !== peg$FAILED) {
16543
+ peg$savedPos = s0;
16544
+ s1 = peg$c16(s3);
16545
+ s0 = s1;
16546
+ } else {
16547
+ peg$currPos = s0;
16548
+ s0 = peg$FAILED;
16549
+ }
16550
+ } else {
16551
+ peg$currPos = s0;
16552
+ s0 = peg$FAILED;
16553
+ }
16554
+ } else {
16555
+ peg$currPos = s0;
16556
+ s0 = peg$FAILED;
16557
+ }
16558
+ } else {
16559
+ peg$currPos = s0;
16560
+ s0 = peg$FAILED;
16561
+ }
16562
+ } else {
16563
+ peg$currPos = s0;
16564
+ s0 = peg$FAILED;
16565
+ }
16566
+ return s0;
16567
+ }
16568
+ function peg$parseLYSection() {
16569
+ let s0, s1, s2, s3, s4, s5, s6, s7;
16570
+ s0 = peg$currPos;
16571
+ s1 = peg$parseLYStartTag();
16572
+ if (s1 !== peg$FAILED) {
16573
+ s2 = peg$parseNewLine();
16574
+ if (s2 !== peg$FAILED) {
16575
+ s3 = peg$currPos;
16576
+ s4 = [];
16577
+ s5 = peg$currPos;
16578
+ s6 = peg$currPos;
16579
+ peg$silentFails++;
16580
+ s7 = peg$parseLYEndTag();
16581
+ peg$silentFails--;
16582
+ if (s7 === peg$FAILED) s6 = undefined;
16583
+ else {
16584
+ peg$currPos = s6;
16585
+ s6 = peg$FAILED;
16586
+ }
16587
+ if (s6 !== peg$FAILED) {
16588
+ s7 = peg$parseSectionCharacter();
16589
+ if (s7 !== peg$FAILED) {
16590
+ s6 = [
16591
+ s6,
16592
+ s7
16593
+ ];
16594
+ s5 = s6;
16595
+ } else {
16596
+ peg$currPos = s5;
16597
+ s5 = peg$FAILED;
16598
+ }
16599
+ } else {
16600
+ peg$currPos = s5;
16601
+ s5 = peg$FAILED;
16602
+ }
16603
+ while(s5 !== peg$FAILED){
16604
+ s4.push(s5);
16605
+ s5 = peg$currPos;
16606
+ s6 = peg$currPos;
16607
+ peg$silentFails++;
16608
+ s7 = peg$parseLYEndTag();
16609
+ peg$silentFails--;
16610
+ if (s7 === peg$FAILED) s6 = undefined;
16611
+ else {
16612
+ peg$currPos = s6;
16613
+ s6 = peg$FAILED;
16614
+ }
16615
+ if (s6 !== peg$FAILED) {
16616
+ s7 = peg$parseSectionCharacter();
16617
+ if (s7 !== peg$FAILED) {
16618
+ s6 = [
16619
+ s6,
16620
+ s7
16621
+ ];
16622
+ s5 = s6;
16623
+ } else {
16624
+ peg$currPos = s5;
16625
+ s5 = peg$FAILED;
16626
+ }
16627
+ } else {
16628
+ peg$currPos = s5;
16629
+ s5 = peg$FAILED;
16630
+ }
16631
+ }
16632
+ if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
16633
+ else s3 = s4;
16634
+ if (s3 !== peg$FAILED) {
16635
+ s4 = peg$parseLYEndTag();
16636
+ if (s4 !== peg$FAILED) {
16637
+ peg$savedPos = s0;
16638
+ s1 = peg$c22(s1, s3, s4);
16639
+ s0 = s1;
16640
+ } else {
16641
+ peg$currPos = s0;
16642
+ s0 = peg$FAILED;
16643
+ }
16644
+ } else {
16645
+ peg$currPos = s0;
16646
+ s0 = peg$FAILED;
16647
+ }
16648
+ } else {
16649
+ peg$currPos = s0;
16650
+ s0 = peg$FAILED;
16651
+ }
16652
+ } else {
16653
+ peg$currPos = s0;
16654
+ s0 = peg$FAILED;
16655
+ }
16656
+ return s0;
16657
+ }
16658
+ function peg$parseLYStartTag() {
16659
+ let s0, s1, s2, s3, s4, s5, s6, s7;
16660
+ s0 = peg$currPos;
16661
+ if (input.charCodeAt(peg$currPos) === 123) {
16662
+ s1 = peg$c3;
16663
+ peg$currPos++;
16664
+ } else {
16665
+ s1 = peg$FAILED;
16666
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16667
+ }
16668
+ if (s1 !== peg$FAILED) {
16669
+ s2 = peg$parse_();
16670
+ if (s2 !== peg$FAILED) {
16671
+ if (input.substr(peg$currPos, 11) === peg$c23) {
16672
+ s3 = peg$c23;
16673
+ peg$currPos += 11;
16674
+ } else {
16675
+ s3 = peg$FAILED;
16676
+ if (peg$silentFails === 0) peg$fail(peg$c24);
16677
+ }
16678
+ if (s3 !== peg$FAILED) {
16679
+ s4 = peg$parse_();
16680
+ if (s4 !== peg$FAILED) {
16681
+ s5 = peg$parseTagColonWithValue();
16682
+ if (s5 === peg$FAILED) s5 = null;
16683
+ if (s5 !== peg$FAILED) {
16684
+ s6 = peg$parse_();
16685
+ if (s6 !== peg$FAILED) {
16686
+ if (input.charCodeAt(peg$currPos) === 125) {
16687
+ s7 = peg$c9;
16688
+ peg$currPos++;
16689
+ } else {
16690
+ s7 = peg$FAILED;
16691
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16692
+ }
16693
+ if (s7 !== peg$FAILED) {
16694
+ peg$savedPos = s0;
16695
+ s1 = peg$c11(s3, s5);
16696
+ s0 = s1;
16697
+ } else {
16698
+ peg$currPos = s0;
16699
+ s0 = peg$FAILED;
16700
+ }
16701
+ } else {
16702
+ peg$currPos = s0;
16703
+ s0 = peg$FAILED;
16704
+ }
16705
+ } else {
16706
+ peg$currPos = s0;
16707
+ s0 = peg$FAILED;
16708
+ }
16709
+ } else {
16710
+ peg$currPos = s0;
16711
+ s0 = peg$FAILED;
16712
+ }
16713
+ } else {
16714
+ peg$currPos = s0;
16715
+ s0 = peg$FAILED;
16716
+ }
16717
+ } else {
16718
+ peg$currPos = s0;
16719
+ s0 = peg$FAILED;
16720
+ }
16721
+ } else {
16722
+ peg$currPos = s0;
16723
+ s0 = peg$FAILED;
16724
+ }
16725
+ return s0;
16726
+ }
16727
+ function peg$parseLYEndTag() {
16728
+ let s0, s1, s2, s3, s4, s5;
16729
+ s0 = peg$currPos;
16730
+ if (input.charCodeAt(peg$currPos) === 123) {
16731
+ s1 = peg$c3;
16732
+ peg$currPos++;
16733
+ } else {
16734
+ s1 = peg$FAILED;
16735
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16736
+ }
16737
+ if (s1 !== peg$FAILED) {
16738
+ s2 = peg$parse_();
16739
+ if (s2 !== peg$FAILED) {
16740
+ if (input.substr(peg$currPos, 9) === peg$c25) {
16741
+ s3 = peg$c25;
16742
+ peg$currPos += 9;
16743
+ } else {
16744
+ s3 = peg$FAILED;
16745
+ if (peg$silentFails === 0) peg$fail(peg$c26);
16746
+ }
16747
+ if (s3 !== peg$FAILED) {
16748
+ s4 = peg$parse_();
16749
+ if (s4 !== peg$FAILED) {
16750
+ if (input.charCodeAt(peg$currPos) === 125) {
16751
+ s5 = peg$c9;
16752
+ peg$currPos++;
16753
+ } else {
16754
+ s5 = peg$FAILED;
16755
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16756
+ }
16757
+ if (s5 !== peg$FAILED) {
16758
+ peg$savedPos = s0;
16759
+ s1 = peg$c27(s3);
16760
+ s0 = s1;
16761
+ } else {
16762
+ peg$currPos = s0;
16763
+ s0 = peg$FAILED;
16764
+ }
16765
+ } else {
16766
+ peg$currPos = s0;
16767
+ s0 = peg$FAILED;
16768
+ }
16769
+ } else {
16770
+ peg$currPos = s0;
16771
+ s0 = peg$FAILED;
16772
+ }
16773
+ } else {
16774
+ peg$currPos = s0;
16775
+ s0 = peg$FAILED;
16776
+ }
16777
+ } else {
16778
+ peg$currPos = s0;
16779
+ s0 = peg$FAILED;
16780
+ }
16781
+ return s0;
16782
+ }
16783
+ function peg$parseGridSection() {
16784
+ let s0, s1, s2, s3, s4, s5, s6, s7;
16785
+ s0 = peg$currPos;
16786
+ s1 = peg$parseGridStartTag();
16787
+ if (s1 !== peg$FAILED) {
16788
+ s2 = peg$parseNewLine();
16789
+ if (s2 !== peg$FAILED) {
16790
+ s3 = peg$currPos;
16791
+ s4 = [];
16792
+ s5 = peg$currPos;
16793
+ s6 = peg$currPos;
16794
+ peg$silentFails++;
16795
+ s7 = peg$parseGridEndTag();
16796
+ peg$silentFails--;
16797
+ if (s7 === peg$FAILED) s6 = undefined;
16798
+ else {
16799
+ peg$currPos = s6;
16800
+ s6 = peg$FAILED;
16801
+ }
16802
+ if (s6 !== peg$FAILED) {
16803
+ s7 = peg$parseSectionCharacter();
16804
+ if (s7 !== peg$FAILED) {
16805
+ s6 = [
16806
+ s6,
16807
+ s7
16808
+ ];
16809
+ s5 = s6;
16810
+ } else {
16811
+ peg$currPos = s5;
16812
+ s5 = peg$FAILED;
16813
+ }
16814
+ } else {
16815
+ peg$currPos = s5;
16816
+ s5 = peg$FAILED;
16817
+ }
16818
+ while(s5 !== peg$FAILED){
16819
+ s4.push(s5);
16820
+ s5 = peg$currPos;
16821
+ s6 = peg$currPos;
16822
+ peg$silentFails++;
16823
+ s7 = peg$parseGridEndTag();
16824
+ peg$silentFails--;
16825
+ if (s7 === peg$FAILED) s6 = undefined;
16826
+ else {
16827
+ peg$currPos = s6;
16828
+ s6 = peg$FAILED;
16829
+ }
16830
+ if (s6 !== peg$FAILED) {
16831
+ s7 = peg$parseSectionCharacter();
16832
+ if (s7 !== peg$FAILED) {
16833
+ s6 = [
16834
+ s6,
16835
+ s7
16836
+ ];
16837
+ s5 = s6;
16838
+ } else {
16839
+ peg$currPos = s5;
16840
+ s5 = peg$FAILED;
16841
+ }
16842
+ } else {
16843
+ peg$currPos = s5;
16844
+ s5 = peg$FAILED;
16845
+ }
16846
+ }
16847
+ if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
16848
+ else s3 = s4;
16849
+ if (s3 !== peg$FAILED) {
16850
+ s4 = peg$parseGridEndTag();
16851
+ if (s4 !== peg$FAILED) {
16852
+ peg$savedPos = s0;
16853
+ s1 = peg$c28(s1, s3, s4);
16854
+ s0 = s1;
16855
+ } else {
16856
+ peg$currPos = s0;
16857
+ s0 = peg$FAILED;
16858
+ }
16859
+ } else {
16860
+ peg$currPos = s0;
16861
+ s0 = peg$FAILED;
16862
+ }
16863
+ } else {
16864
+ peg$currPos = s0;
16865
+ s0 = peg$FAILED;
16866
+ }
16867
+ } else {
16868
+ peg$currPos = s0;
16869
+ s0 = peg$FAILED;
15921
16870
  }
16871
+ return s0;
15922
16872
  }
15923
- function peg$computeLocation(startPos, endPos) {
15924
- const startPosDetails = peg$computePosDetails(startPos);
15925
- const endPosDetails = peg$computePosDetails(endPos);
15926
- return {
15927
- source: peg$source,
15928
- start: {
15929
- offset: startPos,
15930
- line: startPosDetails.line,
15931
- column: startPosDetails.column
15932
- },
15933
- end: {
15934
- offset: endPos,
15935
- line: endPosDetails.line,
15936
- column: endPosDetails.column
16873
+ function peg$parseGridStartTag() {
16874
+ let s0, s1, s2, s3, s4, s5, s6, s7;
16875
+ s0 = peg$currPos;
16876
+ if (input.charCodeAt(peg$currPos) === 123) {
16877
+ s1 = peg$c3;
16878
+ peg$currPos++;
16879
+ } else {
16880
+ s1 = peg$FAILED;
16881
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16882
+ }
16883
+ if (s1 !== peg$FAILED) {
16884
+ s2 = peg$parse_();
16885
+ if (s2 !== peg$FAILED) {
16886
+ if (input.substr(peg$currPos, 3) === peg$c29) {
16887
+ s3 = peg$c29;
16888
+ peg$currPos += 3;
16889
+ } else {
16890
+ s3 = peg$FAILED;
16891
+ if (peg$silentFails === 0) peg$fail(peg$c30);
16892
+ }
16893
+ if (s3 === peg$FAILED) {
16894
+ if (input.substr(peg$currPos, 13) === peg$c31) {
16895
+ s3 = peg$c31;
16896
+ peg$currPos += 13;
16897
+ } else {
16898
+ s3 = peg$FAILED;
16899
+ if (peg$silentFails === 0) peg$fail(peg$c32);
16900
+ }
16901
+ }
16902
+ if (s3 !== peg$FAILED) {
16903
+ s4 = peg$parse_();
16904
+ if (s4 !== peg$FAILED) {
16905
+ s5 = peg$parseTagColonWithValue();
16906
+ if (s5 === peg$FAILED) s5 = null;
16907
+ if (s5 !== peg$FAILED) {
16908
+ s6 = peg$parse_();
16909
+ if (s6 !== peg$FAILED) {
16910
+ if (input.charCodeAt(peg$currPos) === 125) {
16911
+ s7 = peg$c9;
16912
+ peg$currPos++;
16913
+ } else {
16914
+ s7 = peg$FAILED;
16915
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16916
+ }
16917
+ if (s7 !== peg$FAILED) {
16918
+ peg$savedPos = s0;
16919
+ s1 = peg$c11(s3, s5);
16920
+ s0 = s1;
16921
+ } else {
16922
+ peg$currPos = s0;
16923
+ s0 = peg$FAILED;
16924
+ }
16925
+ } else {
16926
+ peg$currPos = s0;
16927
+ s0 = peg$FAILED;
16928
+ }
16929
+ } else {
16930
+ peg$currPos = s0;
16931
+ s0 = peg$FAILED;
16932
+ }
16933
+ } else {
16934
+ peg$currPos = s0;
16935
+ s0 = peg$FAILED;
16936
+ }
16937
+ } else {
16938
+ peg$currPos = s0;
16939
+ s0 = peg$FAILED;
16940
+ }
16941
+ } else {
16942
+ peg$currPos = s0;
16943
+ s0 = peg$FAILED;
15937
16944
  }
15938
- };
15939
- }
15940
- function peg$fail(expected1) {
15941
- if (peg$currPos < peg$maxFailPos) return;
15942
- if (peg$currPos > peg$maxFailPos) {
15943
- peg$maxFailPos = peg$currPos;
15944
- peg$maxFailExpected = [];
16945
+ } else {
16946
+ peg$currPos = s0;
16947
+ s0 = peg$FAILED;
15945
16948
  }
15946
- peg$maxFailExpected.push(expected1);
15947
- }
15948
- function peg$buildSimpleError(message, location1) {
15949
- return new $1a506a341538d943$export$628c65c376ead699(message, [], "", location1);
15950
- }
15951
- function peg$buildStructuredError(expected1, found, location1) {
15952
- return new $1a506a341538d943$export$628c65c376ead699($1a506a341538d943$export$628c65c376ead699.buildMessage(expected1, found), expected1, found, location1);
16949
+ return s0;
15953
16950
  }
15954
- function peg$parseChordSheet() {
15955
- let s0, s1, s2;
16951
+ function peg$parseGridEndTag() {
16952
+ let s0, s1, s2, s3, s4, s5;
15956
16953
  s0 = peg$currPos;
15957
- s1 = [];
15958
- s2 = peg$parseLineWithNewline();
15959
- while(s2 !== peg$FAILED){
15960
- s1.push(s2);
15961
- s2 = peg$parseLineWithNewline();
16954
+ if (input.charCodeAt(peg$currPos) === 123) {
16955
+ s1 = peg$c3;
16956
+ peg$currPos++;
16957
+ } else {
16958
+ s1 = peg$FAILED;
16959
+ if (peg$silentFails === 0) peg$fail(peg$c4);
15962
16960
  }
15963
16961
  if (s1 !== peg$FAILED) {
15964
- s2 = peg$parseLine();
15965
- if (s2 === peg$FAILED) s2 = null;
16962
+ s2 = peg$parse_();
15966
16963
  if (s2 !== peg$FAILED) {
15967
- peg$savedPos = s0;
15968
- s1 = peg$c0(s1, s2);
15969
- s0 = s1;
16964
+ if (input.substr(peg$currPos, 3) === peg$c33) {
16965
+ s3 = peg$c33;
16966
+ peg$currPos += 3;
16967
+ } else {
16968
+ s3 = peg$FAILED;
16969
+ if (peg$silentFails === 0) peg$fail(peg$c34);
16970
+ }
16971
+ if (s3 === peg$FAILED) {
16972
+ if (input.substr(peg$currPos, 11) === peg$c35) {
16973
+ s3 = peg$c35;
16974
+ peg$currPos += 11;
16975
+ } else {
16976
+ s3 = peg$FAILED;
16977
+ if (peg$silentFails === 0) peg$fail(peg$c36);
16978
+ }
16979
+ }
16980
+ if (s3 !== peg$FAILED) {
16981
+ s4 = peg$parse_();
16982
+ if (s4 !== peg$FAILED) {
16983
+ if (input.charCodeAt(peg$currPos) === 125) {
16984
+ s5 = peg$c9;
16985
+ peg$currPos++;
16986
+ } else {
16987
+ s5 = peg$FAILED;
16988
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16989
+ }
16990
+ if (s5 !== peg$FAILED) {
16991
+ peg$savedPos = s0;
16992
+ s1 = peg$c16(s3);
16993
+ s0 = s1;
16994
+ } else {
16995
+ peg$currPos = s0;
16996
+ s0 = peg$FAILED;
16997
+ }
16998
+ } else {
16999
+ peg$currPos = s0;
17000
+ s0 = peg$FAILED;
17001
+ }
17002
+ } else {
17003
+ peg$currPos = s0;
17004
+ s0 = peg$FAILED;
17005
+ }
15970
17006
  } else {
15971
17007
  peg$currPos = s0;
15972
17008
  s0 = peg$FAILED;
@@ -15977,6 +17013,17 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15977
17013
  }
15978
17014
  return s0;
15979
17015
  }
17016
+ function peg$parseSectionCharacter() {
17017
+ let s0;
17018
+ if (input.length > peg$currPos) {
17019
+ s0 = input.charAt(peg$currPos);
17020
+ peg$currPos++;
17021
+ } else {
17022
+ s0 = peg$FAILED;
17023
+ if (peg$silentFails === 0) peg$fail(peg$c37);
17024
+ }
17025
+ return s0;
17026
+ }
15980
17027
  function peg$parseLineWithNewline() {
15981
17028
  let s0, s1, s2;
15982
17029
  s0 = peg$currPos;
@@ -15985,7 +17032,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
15985
17032
  s2 = peg$parseNewLine();
15986
17033
  if (s2 !== peg$FAILED) {
15987
17034
  peg$savedPos = s0;
15988
- s1 = peg$c1(s1);
17035
+ s1 = peg$c38(s1);
15989
17036
  s0 = s1;
15990
17037
  } else {
15991
17038
  peg$currPos = s0;
@@ -16027,7 +17074,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16027
17074
  }
16028
17075
  if (s5 !== peg$FAILED) {
16029
17076
  peg$savedPos = s0;
16030
- s1 = peg$c2(s1, s2, s3, s4);
17077
+ s1 = peg$c39(s1, s2, s3, s4);
16031
17078
  s0 = s1;
16032
17079
  } else {
16033
17080
  peg$currPos = s0;
@@ -16065,7 +17112,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16065
17112
  s1 = peg$parseLyrics();
16066
17113
  if (s1 !== peg$FAILED) {
16067
17114
  peg$savedPos = s0;
16068
- s1 = peg$c3(s1);
17115
+ s1 = peg$c40(s1);
16069
17116
  }
16070
17117
  s0 = s1;
16071
17118
  }
@@ -16081,37 +17128,37 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16081
17128
  if (s1 === peg$FAILED) s1 = null;
16082
17129
  if (s1 !== peg$FAILED) {
16083
17130
  if (input.charCodeAt(peg$currPos) === 35) {
16084
- s2 = peg$c4;
17131
+ s2 = peg$c41;
16085
17132
  peg$currPos++;
16086
17133
  } else {
16087
17134
  s2 = peg$FAILED;
16088
- if (peg$silentFails === 0) peg$fail(peg$c5);
17135
+ if (peg$silentFails === 0) peg$fail(peg$c42);
16089
17136
  }
16090
17137
  if (s2 !== peg$FAILED) {
16091
17138
  s3 = peg$currPos;
16092
17139
  s4 = [];
16093
- if (peg$c6.test(input.charAt(peg$currPos))) {
17140
+ if (peg$c43.test(input.charAt(peg$currPos))) {
16094
17141
  s5 = input.charAt(peg$currPos);
16095
17142
  peg$currPos++;
16096
17143
  } else {
16097
17144
  s5 = peg$FAILED;
16098
- if (peg$silentFails === 0) peg$fail(peg$c7);
17145
+ if (peg$silentFails === 0) peg$fail(peg$c44);
16099
17146
  }
16100
17147
  while(s5 !== peg$FAILED){
16101
17148
  s4.push(s5);
16102
- if (peg$c6.test(input.charAt(peg$currPos))) {
17149
+ if (peg$c43.test(input.charAt(peg$currPos))) {
16103
17150
  s5 = input.charAt(peg$currPos);
16104
17151
  peg$currPos++;
16105
17152
  } else {
16106
17153
  s5 = peg$FAILED;
16107
- if (peg$silentFails === 0) peg$fail(peg$c7);
17154
+ if (peg$silentFails === 0) peg$fail(peg$c44);
16108
17155
  }
16109
17156
  }
16110
17157
  if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
16111
17158
  else s3 = s4;
16112
17159
  if (s3 !== peg$FAILED) {
16113
17160
  peg$savedPos = s0;
16114
- s1 = peg$c8(s3);
17161
+ s1 = peg$c45(s3);
16115
17162
  s0 = s1;
16116
17163
  } else {
16117
17164
  peg$currPos = s0;
@@ -16153,7 +17200,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16153
17200
  else s3 = s4;
16154
17201
  if (s3 !== peg$FAILED) {
16155
17202
  peg$savedPos = s0;
16156
- s1 = peg$c9(s1, s2, s3);
17203
+ s1 = peg$c46(s1, s2, s3);
16157
17204
  s0 = s1;
16158
17205
  } else {
16159
17206
  peg$currPos = s0;
@@ -16195,7 +17242,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16195
17242
  else s3 = s4;
16196
17243
  if (s3 !== peg$FAILED) {
16197
17244
  peg$savedPos = s0;
16198
- s1 = peg$c10(s1, s2, s3);
17245
+ s1 = peg$c47(s1, s2, s3);
16199
17246
  s0 = s1;
16200
17247
  } else {
16201
17248
  peg$currPos = s0;
@@ -16223,7 +17270,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16223
17270
  else s1 = peg$FAILED;
16224
17271
  if (s1 !== peg$FAILED) {
16225
17272
  peg$savedPos = s0;
16226
- s1 = peg$c11(s1);
17273
+ s1 = peg$c48(s1);
16227
17274
  }
16228
17275
  s0 = s1;
16229
17276
  return s0;
@@ -16247,12 +17294,12 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16247
17294
  s1 = peg$FAILED;
16248
17295
  }
16249
17296
  if (s1 !== peg$FAILED) {
16250
- if (input.substr(peg$currPos, 2) === peg$c12) {
16251
- s2 = peg$c12;
17297
+ if (input.substr(peg$currPos, 2) === peg$c49) {
17298
+ s2 = peg$c49;
16252
17299
  peg$currPos += 2;
16253
17300
  } else {
16254
17301
  s2 = peg$FAILED;
16255
- if (peg$silentFails === 0) peg$fail(peg$c13);
17302
+ if (peg$silentFails === 0) peg$fail(peg$c50);
16256
17303
  }
16257
17304
  if (s2 !== peg$FAILED) {
16258
17305
  s3 = [];
@@ -16264,15 +17311,15 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16264
17311
  else s3 = peg$FAILED;
16265
17312
  if (s3 !== peg$FAILED) {
16266
17313
  if (input.charCodeAt(peg$currPos) === 93) {
16267
- s4 = peg$c14;
17314
+ s4 = peg$c51;
16268
17315
  peg$currPos++;
16269
17316
  } else {
16270
17317
  s4 = peg$FAILED;
16271
- if (peg$silentFails === 0) peg$fail(peg$c15);
17318
+ if (peg$silentFails === 0) peg$fail(peg$c52);
16272
17319
  }
16273
17320
  if (s4 !== peg$FAILED) {
16274
17321
  peg$savedPos = s0;
16275
- s1 = peg$c16(s3);
17322
+ s1 = peg$c53(s3);
16276
17323
  s0 = s1;
16277
17324
  } else {
16278
17325
  peg$currPos = s0;
@@ -16306,11 +17353,11 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16306
17353
  }
16307
17354
  if (s1 !== peg$FAILED) {
16308
17355
  if (input.charCodeAt(peg$currPos) === 91) {
16309
- s2 = peg$c17;
17356
+ s2 = peg$c54;
16310
17357
  peg$currPos++;
16311
17358
  } else {
16312
17359
  s2 = peg$FAILED;
16313
- if (peg$silentFails === 0) peg$fail(peg$c18);
17360
+ if (peg$silentFails === 0) peg$fail(peg$c55);
16314
17361
  }
16315
17362
  if (s2 !== peg$FAILED) {
16316
17363
  s3 = [];
@@ -16321,15 +17368,15 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16321
17368
  }
16322
17369
  if (s3 !== peg$FAILED) {
16323
17370
  if (input.charCodeAt(peg$currPos) === 93) {
16324
- s4 = peg$c14;
17371
+ s4 = peg$c51;
16325
17372
  peg$currPos++;
16326
17373
  } else {
16327
17374
  s4 = peg$FAILED;
16328
- if (peg$silentFails === 0) peg$fail(peg$c15);
17375
+ if (peg$silentFails === 0) peg$fail(peg$c52);
16329
17376
  }
16330
17377
  if (s4 !== peg$FAILED) {
16331
17378
  peg$savedPos = s0;
16332
- s1 = peg$c19(s3);
17379
+ s1 = peg$c56(s3);
16333
17380
  s0 = s1;
16334
17381
  } else {
16335
17382
  peg$currPos = s0;
@@ -16351,12 +17398,12 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16351
17398
  }
16352
17399
  function peg$parseChordChar() {
16353
17400
  let s0, s1, s2, s3;
16354
- if (peg$c20.test(input.charAt(peg$currPos))) {
17401
+ if (peg$c57.test(input.charAt(peg$currPos))) {
16355
17402
  s0 = input.charAt(peg$currPos);
16356
17403
  peg$currPos++;
16357
17404
  } else {
16358
17405
  s0 = peg$FAILED;
16359
- if (peg$silentFails === 0) peg$fail(peg$c21);
17406
+ if (peg$silentFails === 0) peg$fail(peg$c58);
16360
17407
  }
16361
17408
  if (s0 === peg$FAILED) {
16362
17409
  s0 = peg$currPos;
@@ -16364,35 +17411,35 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16364
17411
  if (s1 !== peg$FAILED) {
16365
17412
  s2 = peg$currPos;
16366
17413
  if (input.charCodeAt(peg$currPos) === 92) {
16367
- s3 = peg$c22;
17414
+ s3 = peg$c59;
16368
17415
  peg$currPos++;
16369
17416
  } else {
16370
17417
  s3 = peg$FAILED;
16371
- if (peg$silentFails === 0) peg$fail(peg$c23);
17418
+ if (peg$silentFails === 0) peg$fail(peg$c60);
16372
17419
  }
16373
17420
  if (s3 !== peg$FAILED) {
16374
17421
  peg$savedPos = s2;
16375
- s3 = peg$c24();
17422
+ s3 = peg$c61();
16376
17423
  }
16377
17424
  s2 = s3;
16378
17425
  if (s2 === peg$FAILED) {
16379
17426
  s2 = peg$currPos;
16380
17427
  if (input.charCodeAt(peg$currPos) === 93) {
16381
- s3 = peg$c14;
17428
+ s3 = peg$c51;
16382
17429
  peg$currPos++;
16383
17430
  } else {
16384
17431
  s3 = peg$FAILED;
16385
- if (peg$silentFails === 0) peg$fail(peg$c15);
17432
+ if (peg$silentFails === 0) peg$fail(peg$c52);
16386
17433
  }
16387
17434
  if (s3 !== peg$FAILED) {
16388
17435
  peg$savedPos = s2;
16389
- s3 = peg$c25();
17436
+ s3 = peg$c62();
16390
17437
  }
16391
17438
  s2 = s3;
16392
17439
  }
16393
17440
  if (s2 !== peg$FAILED) {
16394
17441
  peg$savedPos = s0;
16395
- s1 = peg$c26(s2);
17442
+ s1 = peg$c63(s2);
16396
17443
  s0 = s1;
16397
17444
  } else {
16398
17445
  peg$currPos = s0;
@@ -16408,12 +17455,12 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16408
17455
  function peg$parseMetaTernary() {
16409
17456
  let s0, s1, s2, s3, s4, s5, s6, s7, s8;
16410
17457
  s0 = peg$currPos;
16411
- if (input.substr(peg$currPos, 2) === peg$c27) {
16412
- s1 = peg$c27;
17458
+ if (input.substr(peg$currPos, 2) === peg$c64) {
17459
+ s1 = peg$c64;
16413
17460
  peg$currPos += 2;
16414
17461
  } else {
16415
17462
  s1 = peg$FAILED;
16416
- if (peg$silentFails === 0) peg$fail(peg$c28);
17463
+ if (peg$silentFails === 0) peg$fail(peg$c65);
16417
17464
  }
16418
17465
  if (s1 !== peg$FAILED) {
16419
17466
  s2 = peg$parse_();
@@ -16435,15 +17482,15 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16435
17482
  s7 = peg$parse_();
16436
17483
  if (s7 !== peg$FAILED) {
16437
17484
  if (input.charCodeAt(peg$currPos) === 125) {
16438
- s8 = peg$c29;
17485
+ s8 = peg$c9;
16439
17486
  peg$currPos++;
16440
17487
  } else {
16441
17488
  s8 = peg$FAILED;
16442
- if (peg$silentFails === 0) peg$fail(peg$c30);
17489
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16443
17490
  }
16444
17491
  if (s8 !== peg$FAILED) {
16445
17492
  peg$savedPos = s0;
16446
- s1 = peg$c31(s3, s4, s6);
17493
+ s1 = peg$c66(s3, s4, s6);
16447
17494
  s0 = s1;
16448
17495
  } else {
16449
17496
  peg$currPos = s0;
@@ -16483,11 +17530,11 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16483
17530
  let s0, s1, s2, s3;
16484
17531
  s0 = peg$currPos;
16485
17532
  if (input.charCodeAt(peg$currPos) === 61) {
16486
- s1 = peg$c32;
17533
+ s1 = peg$c67;
16487
17534
  peg$currPos++;
16488
17535
  } else {
16489
17536
  s1 = peg$FAILED;
16490
- if (peg$silentFails === 0) peg$fail(peg$c33);
17537
+ if (peg$silentFails === 0) peg$fail(peg$c68);
16491
17538
  }
16492
17539
  if (s1 !== peg$FAILED) {
16493
17540
  s2 = peg$parse_();
@@ -16495,7 +17542,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16495
17542
  s3 = peg$parseMetaTestValue();
16496
17543
  if (s3 !== peg$FAILED) {
16497
17544
  peg$savedPos = s0;
16498
- s1 = peg$c34(s3);
17545
+ s1 = peg$c69(s3);
16499
17546
  s0 = s1;
16500
17547
  } else {
16501
17548
  peg$currPos = s0;
@@ -16529,11 +17576,11 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16529
17576
  let s0, s1, s2, s3, s4, s5, s6;
16530
17577
  s0 = peg$currPos;
16531
17578
  if (input.charCodeAt(peg$currPos) === 124) {
16532
- s1 = peg$c35;
17579
+ s1 = peg$c70;
16533
17580
  peg$currPos++;
16534
17581
  } else {
16535
17582
  s1 = peg$FAILED;
16536
- if (peg$silentFails === 0) peg$fail(peg$c36);
17583
+ if (peg$silentFails === 0) peg$fail(peg$c71);
16537
17584
  }
16538
17585
  if (s1 !== peg$FAILED) {
16539
17586
  s2 = peg$parse_();
@@ -16548,7 +17595,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16548
17595
  s6 = peg$parse_();
16549
17596
  if (s6 !== peg$FAILED) {
16550
17597
  peg$savedPos = s0;
16551
- s1 = peg$c37(s3, s5);
17598
+ s1 = peg$c72(s3, s5);
16552
17599
  s0 = s1;
16553
17600
  } else {
16554
17601
  peg$currPos = s0;
@@ -16580,11 +17627,11 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16580
17627
  let s0, s1, s2, s3;
16581
17628
  s0 = peg$currPos;
16582
17629
  if (input.charCodeAt(peg$currPos) === 124) {
16583
- s1 = peg$c35;
17630
+ s1 = peg$c70;
16584
17631
  peg$currPos++;
16585
17632
  } else {
16586
17633
  s1 = peg$FAILED;
16587
- if (peg$silentFails === 0) peg$fail(peg$c36);
17634
+ if (peg$silentFails === 0) peg$fail(peg$c71);
16588
17635
  }
16589
17636
  if (s1 !== peg$FAILED) {
16590
17637
  s2 = peg$parse_();
@@ -16592,7 +17639,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16592
17639
  s3 = peg$parseMetaExpression();
16593
17640
  if (s3 !== peg$FAILED) {
16594
17641
  peg$savedPos = s0;
16595
- s1 = peg$c38(s3);
17642
+ s1 = peg$c73(s3);
16596
17643
  s0 = s1;
16597
17644
  } else {
16598
17645
  peg$currPos = s0;
@@ -16611,21 +17658,21 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16611
17658
  function peg$parseMetaVariableName() {
16612
17659
  let s0, s1;
16613
17660
  s0 = [];
16614
- if (peg$c39.test(input.charAt(peg$currPos))) {
17661
+ if (peg$c74.test(input.charAt(peg$currPos))) {
16615
17662
  s1 = input.charAt(peg$currPos);
16616
17663
  peg$currPos++;
16617
17664
  } else {
16618
17665
  s1 = peg$FAILED;
16619
- if (peg$silentFails === 0) peg$fail(peg$c40);
17666
+ if (peg$silentFails === 0) peg$fail(peg$c75);
16620
17667
  }
16621
17668
  if (s1 !== peg$FAILED) while(s1 !== peg$FAILED){
16622
17669
  s0.push(s1);
16623
- if (peg$c39.test(input.charAt(peg$currPos))) {
17670
+ if (peg$c74.test(input.charAt(peg$currPos))) {
16624
17671
  s1 = input.charAt(peg$currPos);
16625
17672
  peg$currPos++;
16626
17673
  } else {
16627
17674
  s1 = peg$FAILED;
16628
- if (peg$silentFails === 0) peg$fail(peg$c40);
17675
+ if (peg$silentFails === 0) peg$fail(peg$c75);
16629
17676
  }
16630
17677
  }
16631
17678
  else s0 = peg$FAILED;
@@ -16668,43 +17715,43 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16668
17715
  if (s0 === peg$FAILED) {
16669
17716
  s0 = peg$currPos;
16670
17717
  if (input.charCodeAt(peg$currPos) === 93) {
16671
- s1 = peg$c14;
17718
+ s1 = peg$c51;
16672
17719
  peg$currPos++;
16673
17720
  } else {
16674
17721
  s1 = peg$FAILED;
16675
- if (peg$silentFails === 0) peg$fail(peg$c15);
17722
+ if (peg$silentFails === 0) peg$fail(peg$c52);
16676
17723
  }
16677
17724
  if (s1 !== peg$FAILED) {
16678
17725
  peg$savedPos = s0;
16679
- s1 = peg$c41();
17726
+ s1 = peg$c76();
16680
17727
  }
16681
17728
  s0 = s1;
16682
17729
  if (s0 === peg$FAILED) {
16683
17730
  s0 = peg$currPos;
16684
17731
  if (input.charCodeAt(peg$currPos) === 124) {
16685
- s1 = peg$c35;
17732
+ s1 = peg$c70;
16686
17733
  peg$currPos++;
16687
17734
  } else {
16688
17735
  s1 = peg$FAILED;
16689
- if (peg$silentFails === 0) peg$fail(peg$c36);
17736
+ if (peg$silentFails === 0) peg$fail(peg$c71);
16690
17737
  }
16691
17738
  if (s1 !== peg$FAILED) {
16692
17739
  peg$savedPos = s0;
16693
- s1 = peg$c42();
17740
+ s1 = peg$c77();
16694
17741
  }
16695
17742
  s0 = s1;
16696
17743
  if (s0 === peg$FAILED) {
16697
17744
  s0 = peg$currPos;
16698
17745
  if (input.charCodeAt(peg$currPos) === 125) {
16699
- s1 = peg$c29;
17746
+ s1 = peg$c9;
16700
17747
  peg$currPos++;
16701
17748
  } else {
16702
17749
  s1 = peg$FAILED;
16703
- if (peg$silentFails === 0) peg$fail(peg$c30);
17750
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16704
17751
  }
16705
17752
  if (s1 !== peg$FAILED) {
16706
17753
  peg$savedPos = s0;
16707
- s1 = peg$c43();
17754
+ s1 = peg$c78();
16708
17755
  }
16709
17756
  s0 = s1;
16710
17757
  }
@@ -16720,12 +17767,12 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16720
17767
  }
16721
17768
  function peg$parseWordChar() {
16722
17769
  let s0, s1, s2, s3;
16723
- if (peg$c44.test(input.charAt(peg$currPos))) {
17770
+ if (peg$c79.test(input.charAt(peg$currPos))) {
16724
17771
  s0 = input.charAt(peg$currPos);
16725
17772
  peg$currPos++;
16726
17773
  } else {
16727
17774
  s0 = peg$FAILED;
16728
- if (peg$silentFails === 0) peg$fail(peg$c45);
17775
+ if (peg$silentFails === 0) peg$fail(peg$c80);
16729
17776
  }
16730
17777
  if (s0 === peg$FAILED) {
16731
17778
  s0 = peg$currPos;
@@ -16733,113 +17780,113 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16733
17780
  if (s1 !== peg$FAILED) {
16734
17781
  s2 = peg$currPos;
16735
17782
  if (input.charCodeAt(peg$currPos) === 92) {
16736
- s3 = peg$c22;
17783
+ s3 = peg$c59;
16737
17784
  peg$currPos++;
16738
17785
  } else {
16739
17786
  s3 = peg$FAILED;
16740
- if (peg$silentFails === 0) peg$fail(peg$c23);
17787
+ if (peg$silentFails === 0) peg$fail(peg$c60);
16741
17788
  }
16742
17789
  if (s3 !== peg$FAILED) {
16743
17790
  peg$savedPos = s2;
16744
- s3 = peg$c46();
17791
+ s3 = peg$c81();
16745
17792
  }
16746
17793
  s2 = s3;
16747
17794
  if (s2 === peg$FAILED) {
16748
17795
  s2 = peg$currPos;
16749
17796
  if (input.charCodeAt(peg$currPos) === 124) {
16750
- s3 = peg$c35;
17797
+ s3 = peg$c70;
16751
17798
  peg$currPos++;
16752
17799
  } else {
16753
17800
  s3 = peg$FAILED;
16754
- if (peg$silentFails === 0) peg$fail(peg$c36);
17801
+ if (peg$silentFails === 0) peg$fail(peg$c71);
16755
17802
  }
16756
17803
  if (s3 !== peg$FAILED) {
16757
17804
  peg$savedPos = s2;
16758
- s3 = peg$c42();
17805
+ s3 = peg$c77();
16759
17806
  }
16760
17807
  s2 = s3;
16761
17808
  if (s2 === peg$FAILED) {
16762
17809
  s2 = peg$currPos;
16763
17810
  if (input.charCodeAt(peg$currPos) === 91) {
16764
- s3 = peg$c17;
17811
+ s3 = peg$c54;
16765
17812
  peg$currPos++;
16766
17813
  } else {
16767
17814
  s3 = peg$FAILED;
16768
- if (peg$silentFails === 0) peg$fail(peg$c18);
17815
+ if (peg$silentFails === 0) peg$fail(peg$c55);
16769
17816
  }
16770
17817
  if (s3 !== peg$FAILED) {
16771
17818
  peg$savedPos = s2;
16772
- s3 = peg$c47();
17819
+ s3 = peg$c82();
16773
17820
  }
16774
17821
  s2 = s3;
16775
17822
  if (s2 === peg$FAILED) {
16776
17823
  s2 = peg$currPos;
16777
17824
  if (input.charCodeAt(peg$currPos) === 93) {
16778
- s3 = peg$c14;
17825
+ s3 = peg$c51;
16779
17826
  peg$currPos++;
16780
17827
  } else {
16781
17828
  s3 = peg$FAILED;
16782
- if (peg$silentFails === 0) peg$fail(peg$c15);
17829
+ if (peg$silentFails === 0) peg$fail(peg$c52);
16783
17830
  }
16784
17831
  if (s3 !== peg$FAILED) {
16785
17832
  peg$savedPos = s2;
16786
- s3 = peg$c41();
17833
+ s3 = peg$c76();
16787
17834
  }
16788
17835
  s2 = s3;
16789
17836
  if (s2 === peg$FAILED) {
16790
17837
  s2 = peg$currPos;
16791
17838
  if (input.charCodeAt(peg$currPos) === 123) {
16792
- s3 = peg$c48;
17839
+ s3 = peg$c3;
16793
17840
  peg$currPos++;
16794
17841
  } else {
16795
17842
  s3 = peg$FAILED;
16796
- if (peg$silentFails === 0) peg$fail(peg$c49);
17843
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16797
17844
  }
16798
17845
  if (s3 !== peg$FAILED) {
16799
17846
  peg$savedPos = s2;
16800
- s3 = peg$c50();
17847
+ s3 = peg$c83();
16801
17848
  }
16802
17849
  s2 = s3;
16803
17850
  if (s2 === peg$FAILED) {
16804
17851
  s2 = peg$currPos;
16805
17852
  if (input.charCodeAt(peg$currPos) === 125) {
16806
- s3 = peg$c29;
17853
+ s3 = peg$c9;
16807
17854
  peg$currPos++;
16808
17855
  } else {
16809
17856
  s3 = peg$FAILED;
16810
- if (peg$silentFails === 0) peg$fail(peg$c30);
17857
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16811
17858
  }
16812
17859
  if (s3 !== peg$FAILED) {
16813
17860
  peg$savedPos = s2;
16814
- s3 = peg$c43();
17861
+ s3 = peg$c78();
16815
17862
  }
16816
17863
  s2 = s3;
16817
17864
  if (s2 === peg$FAILED) {
16818
17865
  s2 = peg$currPos;
16819
17866
  if (input.charCodeAt(peg$currPos) === 37) {
16820
- s3 = peg$c51;
17867
+ s3 = peg$c84;
16821
17868
  peg$currPos++;
16822
17869
  } else {
16823
17870
  s3 = peg$FAILED;
16824
- if (peg$silentFails === 0) peg$fail(peg$c52);
17871
+ if (peg$silentFails === 0) peg$fail(peg$c85);
16825
17872
  }
16826
17873
  if (s3 !== peg$FAILED) {
16827
17874
  peg$savedPos = s2;
16828
- s3 = peg$c53();
17875
+ s3 = peg$c86();
16829
17876
  }
16830
17877
  s2 = s3;
16831
17878
  if (s2 === peg$FAILED) {
16832
17879
  s2 = peg$currPos;
16833
17880
  if (input.charCodeAt(peg$currPos) === 35) {
16834
- s3 = peg$c4;
17881
+ s3 = peg$c41;
16835
17882
  peg$currPos++;
16836
17883
  } else {
16837
17884
  s3 = peg$FAILED;
16838
- if (peg$silentFails === 0) peg$fail(peg$c5);
17885
+ if (peg$silentFails === 0) peg$fail(peg$c42);
16839
17886
  }
16840
17887
  if (s3 !== peg$FAILED) {
16841
17888
  peg$savedPos = s2;
16842
- s3 = peg$c54();
17889
+ s3 = peg$c87();
16843
17890
  }
16844
17891
  s2 = s3;
16845
17892
  }
@@ -16851,7 +17898,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16851
17898
  }
16852
17899
  if (s2 !== peg$FAILED) {
16853
17900
  peg$savedPos = s0;
16854
- s1 = peg$c26(s2);
17901
+ s1 = peg$c63(s2);
16855
17902
  s0 = s1;
16856
17903
  } else {
16857
17904
  peg$currPos = s0;
@@ -16868,11 +17915,11 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16868
17915
  let s0, s1, s2, s3, s4, s5, s6, s7;
16869
17916
  s0 = peg$currPos;
16870
17917
  if (input.charCodeAt(peg$currPos) === 123) {
16871
- s1 = peg$c48;
17918
+ s1 = peg$c3;
16872
17919
  peg$currPos++;
16873
17920
  } else {
16874
17921
  s1 = peg$FAILED;
16875
- if (peg$silentFails === 0) peg$fail(peg$c49);
17922
+ if (peg$silentFails === 0) peg$fail(peg$c4);
16876
17923
  }
16877
17924
  if (s1 !== peg$FAILED) {
16878
17925
  s2 = peg$parse_();
@@ -16890,15 +17937,15 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16890
17937
  s6 = peg$parse_();
16891
17938
  if (s6 !== peg$FAILED) {
16892
17939
  if (input.charCodeAt(peg$currPos) === 125) {
16893
- s7 = peg$c29;
17940
+ s7 = peg$c9;
16894
17941
  peg$currPos++;
16895
17942
  } else {
16896
17943
  s7 = peg$FAILED;
16897
- if (peg$silentFails === 0) peg$fail(peg$c30);
17944
+ if (peg$silentFails === 0) peg$fail(peg$c10);
16898
17945
  }
16899
17946
  if (s7 !== peg$FAILED) {
16900
17947
  peg$savedPos = s0;
16901
- s1 = peg$c55(s3, s5);
17948
+ s1 = peg$c88(s3, s5);
16902
17949
  s0 = s1;
16903
17950
  } else {
16904
17951
  peg$currPos = s0;
@@ -16934,11 +17981,11 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16934
17981
  let s0, s1, s2, s3;
16935
17982
  s0 = peg$currPos;
16936
17983
  if (input.charCodeAt(peg$currPos) === 58) {
16937
- s1 = peg$c56;
17984
+ s1 = peg$c89;
16938
17985
  peg$currPos++;
16939
17986
  } else {
16940
17987
  s1 = peg$FAILED;
16941
- if (peg$silentFails === 0) peg$fail(peg$c57);
17988
+ if (peg$silentFails === 0) peg$fail(peg$c90);
16942
17989
  }
16943
17990
  if (s1 !== peg$FAILED) {
16944
17991
  s2 = peg$parse_();
@@ -16946,7 +17993,7 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16946
17993
  s3 = peg$parseTagValue();
16947
17994
  if (s3 !== peg$FAILED) {
16948
17995
  peg$savedPos = s0;
16949
- s1 = peg$c58(s3);
17996
+ s1 = peg$c91(s3);
16950
17997
  s0 = s1;
16951
17998
  } else {
16952
17999
  peg$currPos = s0;
@@ -16965,21 +18012,21 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16965
18012
  function peg$parseTagName() {
16966
18013
  let s0, s1;
16967
18014
  s0 = [];
16968
- if (peg$c59.test(input.charAt(peg$currPos))) {
18015
+ if (peg$c92.test(input.charAt(peg$currPos))) {
16969
18016
  s1 = input.charAt(peg$currPos);
16970
18017
  peg$currPos++;
16971
18018
  } else {
16972
18019
  s1 = peg$FAILED;
16973
- if (peg$silentFails === 0) peg$fail(peg$c60);
18020
+ if (peg$silentFails === 0) peg$fail(peg$c93);
16974
18021
  }
16975
18022
  if (s1 !== peg$FAILED) while(s1 !== peg$FAILED){
16976
18023
  s0.push(s1);
16977
- if (peg$c59.test(input.charAt(peg$currPos))) {
18024
+ if (peg$c92.test(input.charAt(peg$currPos))) {
16978
18025
  s1 = input.charAt(peg$currPos);
16979
18026
  peg$currPos++;
16980
18027
  } else {
16981
18028
  s1 = peg$FAILED;
16982
- if (peg$silentFails === 0) peg$fail(peg$c60);
18029
+ if (peg$silentFails === 0) peg$fail(peg$c93);
16983
18030
  }
16984
18031
  }
16985
18032
  else s0 = peg$FAILED;
@@ -16997,12 +18044,12 @@ function $1a506a341538d943$var$peg$parse(input, options) {
16997
18044
  }
16998
18045
  function peg$parseTagValueChar() {
16999
18046
  let s0, s1, s2, s3;
17000
- if (peg$c61.test(input.charAt(peg$currPos))) {
18047
+ if (peg$c94.test(input.charAt(peg$currPos))) {
17001
18048
  s0 = input.charAt(peg$currPos);
17002
18049
  peg$currPos++;
17003
18050
  } else {
17004
18051
  s0 = peg$FAILED;
17005
- if (peg$silentFails === 0) peg$fail(peg$c62);
18052
+ if (peg$silentFails === 0) peg$fail(peg$c95);
17006
18053
  }
17007
18054
  if (s0 === peg$FAILED) {
17008
18055
  s0 = peg$currPos;
@@ -17010,50 +18057,50 @@ function $1a506a341538d943$var$peg$parse(input, options) {
17010
18057
  if (s1 !== peg$FAILED) {
17011
18058
  s2 = peg$currPos;
17012
18059
  if (input.charCodeAt(peg$currPos) === 92) {
17013
- s3 = peg$c22;
18060
+ s3 = peg$c59;
17014
18061
  peg$currPos++;
17015
18062
  } else {
17016
18063
  s3 = peg$FAILED;
17017
- if (peg$silentFails === 0) peg$fail(peg$c23);
18064
+ if (peg$silentFails === 0) peg$fail(peg$c60);
17018
18065
  }
17019
18066
  if (s3 !== peg$FAILED) {
17020
18067
  peg$savedPos = s2;
17021
- s3 = peg$c46();
18068
+ s3 = peg$c81();
17022
18069
  }
17023
18070
  s2 = s3;
17024
18071
  if (s2 === peg$FAILED) {
17025
18072
  s2 = peg$currPos;
17026
18073
  if (input.charCodeAt(peg$currPos) === 125) {
17027
- s3 = peg$c29;
18074
+ s3 = peg$c9;
17028
18075
  peg$currPos++;
17029
18076
  } else {
17030
18077
  s3 = peg$FAILED;
17031
- if (peg$silentFails === 0) peg$fail(peg$c30);
18078
+ if (peg$silentFails === 0) peg$fail(peg$c10);
17032
18079
  }
17033
18080
  if (s3 !== peg$FAILED) {
17034
18081
  peg$savedPos = s2;
17035
- s3 = peg$c43();
18082
+ s3 = peg$c78();
17036
18083
  }
17037
18084
  s2 = s3;
17038
18085
  if (s2 === peg$FAILED) {
17039
18086
  s2 = peg$currPos;
17040
18087
  if (input.charCodeAt(peg$currPos) === 123) {
17041
- s3 = peg$c48;
18088
+ s3 = peg$c3;
17042
18089
  peg$currPos++;
17043
18090
  } else {
17044
18091
  s3 = peg$FAILED;
17045
- if (peg$silentFails === 0) peg$fail(peg$c49);
18092
+ if (peg$silentFails === 0) peg$fail(peg$c4);
17046
18093
  }
17047
18094
  if (s3 !== peg$FAILED) {
17048
18095
  peg$savedPos = s2;
17049
- s3 = peg$c50();
18096
+ s3 = peg$c83();
17050
18097
  }
17051
18098
  s2 = s3;
17052
18099
  }
17053
18100
  }
17054
18101
  if (s2 !== peg$FAILED) {
17055
18102
  peg$savedPos = s0;
17056
- s1 = peg$c26(s2);
18103
+ s1 = peg$c63(s2);
17057
18104
  s0 = s1;
17058
18105
  } else {
17059
18106
  peg$currPos = s0;
@@ -17070,27 +18117,27 @@ function $1a506a341538d943$var$peg$parse(input, options) {
17070
18117
  let s0, s1;
17071
18118
  peg$silentFails++;
17072
18119
  s0 = [];
17073
- if (peg$c64.test(input.charAt(peg$currPos))) {
18120
+ if (peg$c97.test(input.charAt(peg$currPos))) {
17074
18121
  s1 = input.charAt(peg$currPos);
17075
18122
  peg$currPos++;
17076
18123
  } else {
17077
18124
  s1 = peg$FAILED;
17078
- if (peg$silentFails === 0) peg$fail(peg$c65);
18125
+ if (peg$silentFails === 0) peg$fail(peg$c98);
17079
18126
  }
17080
18127
  while(s1 !== peg$FAILED){
17081
18128
  s0.push(s1);
17082
- if (peg$c64.test(input.charAt(peg$currPos))) {
18129
+ if (peg$c97.test(input.charAt(peg$currPos))) {
17083
18130
  s1 = input.charAt(peg$currPos);
17084
18131
  peg$currPos++;
17085
18132
  } else {
17086
18133
  s1 = peg$FAILED;
17087
- if (peg$silentFails === 0) peg$fail(peg$c65);
18134
+ if (peg$silentFails === 0) peg$fail(peg$c98);
17088
18135
  }
17089
18136
  }
17090
18137
  peg$silentFails--;
17091
18138
  if (s0 === peg$FAILED) {
17092
18139
  s1 = peg$FAILED;
17093
- if (peg$silentFails === 0) peg$fail(peg$c63);
18140
+ if (peg$silentFails === 0) peg$fail(peg$c96);
17094
18141
  }
17095
18142
  return s0;
17096
18143
  }
@@ -17098,28 +18145,28 @@ function $1a506a341538d943$var$peg$parse(input, options) {
17098
18145
  let s0, s1;
17099
18146
  peg$silentFails++;
17100
18147
  s0 = [];
17101
- if (peg$c67.test(input.charAt(peg$currPos))) {
18148
+ if (peg$c100.test(input.charAt(peg$currPos))) {
17102
18149
  s1 = input.charAt(peg$currPos);
17103
18150
  peg$currPos++;
17104
18151
  } else {
17105
18152
  s1 = peg$FAILED;
17106
- if (peg$silentFails === 0) peg$fail(peg$c68);
18153
+ if (peg$silentFails === 0) peg$fail(peg$c101);
17107
18154
  }
17108
18155
  if (s1 !== peg$FAILED) while(s1 !== peg$FAILED){
17109
18156
  s0.push(s1);
17110
- if (peg$c67.test(input.charAt(peg$currPos))) {
18157
+ if (peg$c100.test(input.charAt(peg$currPos))) {
17111
18158
  s1 = input.charAt(peg$currPos);
17112
18159
  peg$currPos++;
17113
18160
  } else {
17114
18161
  s1 = peg$FAILED;
17115
- if (peg$silentFails === 0) peg$fail(peg$c68);
18162
+ if (peg$silentFails === 0) peg$fail(peg$c101);
17116
18163
  }
17117
18164
  }
17118
18165
  else s0 = peg$FAILED;
17119
18166
  peg$silentFails--;
17120
18167
  if (s0 === peg$FAILED) {
17121
18168
  s1 = peg$FAILED;
17122
- if (peg$silentFails === 0) peg$fail(peg$c66);
18169
+ if (peg$silentFails === 0) peg$fail(peg$c99);
17123
18170
  }
17124
18171
  return s0;
17125
18172
  }
@@ -17157,58 +18204,88 @@ function $1a506a341538d943$var$peg$parse(input, options) {
17157
18204
  function peg$parseLineFeed() {
17158
18205
  let s0;
17159
18206
  if (input.charCodeAt(peg$currPos) === 10) {
17160
- s0 = peg$c69;
18207
+ s0 = peg$c102;
17161
18208
  peg$currPos++;
17162
18209
  } else {
17163
18210
  s0 = peg$FAILED;
17164
- if (peg$silentFails === 0) peg$fail(peg$c70);
18211
+ if (peg$silentFails === 0) peg$fail(peg$c103);
17165
18212
  }
17166
18213
  return s0;
17167
18214
  }
17168
18215
  function peg$parseCarriageReturn() {
17169
18216
  let s0;
17170
18217
  if (input.charCodeAt(peg$currPos) === 13) {
17171
- s0 = peg$c71;
18218
+ s0 = peg$c104;
17172
18219
  peg$currPos++;
17173
18220
  } else {
17174
18221
  s0 = peg$FAILED;
17175
- if (peg$silentFails === 0) peg$fail(peg$c72);
18222
+ if (peg$silentFails === 0) peg$fail(peg$c105);
17176
18223
  }
17177
18224
  return s0;
17178
18225
  }
17179
18226
  function peg$parseEscape() {
17180
18227
  let s0;
17181
18228
  if (input.charCodeAt(peg$currPos) === 92) {
17182
- s0 = peg$c22;
18229
+ s0 = peg$c59;
17183
18230
  peg$currPos++;
17184
18231
  } else {
17185
18232
  s0 = peg$FAILED;
17186
- if (peg$silentFails === 0) peg$fail(peg$c23);
18233
+ if (peg$silentFails === 0) peg$fail(peg$c60);
17187
18234
  }
17188
18235
  return s0;
17189
18236
  }
17190
18237
  function peg$parsePound() {
17191
18238
  let s0;
17192
18239
  if (input.charCodeAt(peg$currPos) === 35) {
17193
- s0 = peg$c4;
18240
+ s0 = peg$c41;
17194
18241
  peg$currPos++;
17195
18242
  } else {
17196
18243
  s0 = peg$FAILED;
17197
- if (peg$silentFails === 0) peg$fail(peg$c5);
18244
+ if (peg$silentFails === 0) peg$fail(peg$c42);
17198
18245
  }
17199
18246
  return s0;
17200
18247
  }
17201
18248
  function peg$parsePercent() {
17202
18249
  let s0;
17203
18250
  if (input.charCodeAt(peg$currPos) === 37) {
17204
- s0 = peg$c51;
18251
+ s0 = peg$c84;
17205
18252
  peg$currPos++;
17206
18253
  } else {
17207
18254
  s0 = peg$FAILED;
17208
- if (peg$silentFails === 0) peg$fail(peg$c52);
18255
+ if (peg$silentFails === 0) peg$fail(peg$c85);
17209
18256
  }
17210
18257
  return s0;
17211
18258
  }
18259
+ function buildSection(sectionType, startTag, endTag, content) {
18260
+ return [
18261
+ buildLine([
18262
+ startTag
18263
+ ]),
18264
+ ...splitSectionContent(content).map((line)=>buildLine([
18265
+ line
18266
+ ])),
18267
+ buildLine([
18268
+ endTag
18269
+ ])
18270
+ ];
18271
+ }
18272
+ function buildTag(name, value, location) {
18273
+ return {
18274
+ type: "tag",
18275
+ name: name,
18276
+ value: value,
18277
+ location: location.start
18278
+ };
18279
+ }
18280
+ function buildLine(items) {
18281
+ return {
18282
+ type: "line",
18283
+ items: items
18284
+ };
18285
+ }
18286
+ function splitSectionContent(content) {
18287
+ return content.replace(/\n$/, "").split("\n");
18288
+ }
17212
18289
  peg$result = peg$startRuleFunction();
17213
18290
  if (peg$result !== peg$FAILED && peg$currPos === input.length) return peg$result;
17214
18291
  else {
@@ -17771,41 +18848,71 @@ function $dfecd32049fa58e9$export$74743eda5dda3ccf(key) {
17771
18848
 
17772
18849
 
17773
18850
 
18851
+
18852
+ class $38f3eb012f6a4720$var$WhenClause {
18853
+ constructor(condition, callback){
18854
+ this.condition = !!condition;
18855
+ this.callback = callback;
18856
+ }
18857
+ evaluate(otherClauses) {
18858
+ if (this.condition) return this.callback();
18859
+ if (otherClauses.length > 0) {
18860
+ const [firstClause, ...rest] = otherClauses;
18861
+ return firstClause.evaluate(rest);
18862
+ }
18863
+ return "";
18864
+ }
18865
+ }
18866
+ var $38f3eb012f6a4720$export$2e2bcd8739ae039 = $38f3eb012f6a4720$var$WhenClause;
18867
+
18868
+
17774
18869
  class $5dfeb7121ee98007$var$When {
17775
- constructor(condition, thenCallback = null){
18870
+ constructor(condition, thenCallback){
17776
18871
  this.condition = false;
17777
- this.thenCallback = null;
17778
- this.elseCallback = null;
17779
- this.condition = !!condition;
17780
- this.thenCallback = thenCallback;
18872
+ this.clauses = [];
18873
+ this.add(condition, thenCallback);
17781
18874
  }
17782
18875
  then(thenCallback) {
17783
- this.thenCallback = thenCallback;
17784
- return this;
18876
+ return this.add(this.condition, thenCallback);
18877
+ }
18878
+ elseWhen(condition, callback) {
18879
+ return this.add(condition, callback);
18880
+ }
18881
+ else(callback) {
18882
+ return this.add(true, callback);
17785
18883
  }
17786
- else(elseCallback) {
17787
- this.elseCallback = elseCallback;
18884
+ add(condition, callback) {
18885
+ this.condition = !!condition;
18886
+ if (callback) this.clauses.push(new (0, $38f3eb012f6a4720$export$2e2bcd8739ae039)(condition, callback));
17788
18887
  return this;
17789
18888
  }
17790
18889
  toString() {
17791
- if (this.condition) return this.thenCallback ? this.thenCallback() : "";
17792
- return this.elseCallback ? this.elseCallback() : "";
18890
+ const [firstClause, ...rest] = this.clauses;
18891
+ if (firstClause) return firstClause.evaluate(rest);
18892
+ throw new Error("Expected at least one .then() clause");
17793
18893
  }
17794
18894
  }
17795
18895
  var $5dfeb7121ee98007$export$2e2bcd8739ae039 = $5dfeb7121ee98007$var$When;
17796
18896
 
17797
18897
 
18898
+
17798
18899
  const $376e205ced98486b$export$17c9e635b932873b = (item)=>item instanceof (0, $d454f4215ba01af2$export$2e2bcd8739ae039);
17799
18900
  const $376e205ced98486b$export$3db5961874282581 = (line)=>line.items.some((item)=>item.isRenderable());
17800
18901
  const $376e205ced98486b$export$3bf645f08efe3292 = (item)=>item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039);
18902
+ const $376e205ced98486b$export$899158ea22bb4609 = (item)=>item instanceof (0, $e1378a714a1834c5$export$2e2bcd8739ae039);
17801
18903
  const $376e205ced98486b$export$3ab01370f5e64ac8 = (item)=>item.name === "comment";
17802
18904
  function $376e205ced98486b$export$6ea1b0eb82ead3f(string) {
17803
- return string.trim().replace(/(<\/[a-z]+>)\s+(<)/g, "$1$2").replace(/(\n)\s+/g, "");
18905
+ return string.trim().replace(/(<\/[a-z]+>)\s+(<)/g, "$1$2").replace(/(>)\s+(<\/[a-z]+>)/g, "$1$2").replace(/(\n)\s+/g, "");
18906
+ }
18907
+ const $376e205ced98486b$export$e2953cc935d48476 = (string)=>string.replace(/\n/g, "<br>");
18908
+ function $376e205ced98486b$export$4c0287abd2ec956e(paragraph, configuration) {
18909
+ const delegate = configuration.delegates[paragraph.type] || (0, $bbcfd2c49e8e9957$export$f152539e8297cacc);
18910
+ return delegate(paragraph.contents);
17804
18911
  }
17805
18912
  function $376e205ced98486b$export$79b2f7037acddd43(collection, callback) {
17806
18913
  return collection.map(callback).join("");
17807
18914
  }
17808
- function $376e205ced98486b$export$a55877ca9db47377(condition, callback = null) {
18915
+ function $376e205ced98486b$export$a55877ca9db47377(condition, callback) {
17809
18916
  return new (0, $5dfeb7121ee98007$export$2e2bcd8739ae039)(condition, callback);
17810
18917
  }
17811
18918
  const $376e205ced98486b$export$b8d631d9200974fa = (line)=>line.items.some((item)=>item instanceof (0, $d454f4215ba01af2$export$2e2bcd8739ae039) && !(0, $21a34a464e7bc609$export$78d1711480f95c3e)(item.lyrics) || item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039) && item.isRenderable() || (0, $21a34a464e7bc609$export$e3f63561d52b936d)(item));
@@ -17876,6 +18983,10 @@ var $376e205ced98486b$export$2e2bcd8739ae039 = {
17876
18983
  return combined;
17877
18984
  }
17878
18985
  formatParagraph(paragraph, metadata) {
18986
+ if (paragraph.isLiteral()) return [
18987
+ paragraph.label,
18988
+ (0, $376e205ced98486b$export$4c0287abd2ec956e)(paragraph, this.configuration)
18989
+ ].filter((part)=>part).join("\n");
17879
18990
  return paragraph.lines.filter((line)=>line.hasRenderableItems()).map((line)=>this.formatLine(line, metadata)).join("\n");
17880
18991
  }
17881
18992
  formatLine(line, metadata) {
@@ -17885,14 +18996,6 @@ var $376e205ced98486b$export$2e2bcd8739ae039 = {
17885
18996
  ];
17886
18997
  return parts.filter((p)=>!(0, $21a34a464e7bc609$export$78d1711480f95c3e)(p)).map((part)=>(part || "").trimRight()).join("\n");
17887
18998
  }
17888
- formatTitle(title) {
17889
- if (title) return `title: ${title}\n`;
17890
- return "";
17891
- }
17892
- formatSubTitle(subtitle) {
17893
- if (subtitle) return `${subtitle}\n`;
17894
- return "";
17895
- }
17896
18999
  formatLineTop(line, metadata) {
17897
19000
  if ((0, $21a34a464e7bc609$export$bf7e789722aab9d6)(line)) return this.formatLineWithFormatter(line, this.formatItemTop, metadata);
17898
19001
  return null;
@@ -17925,11 +19028,18 @@ var $376e205ced98486b$export$2e2bcd8739ae039 = {
17925
19028
  return line.items.map((item)=>formatter.call(this, item, metadata, line)).join("");
17926
19029
  }
17927
19030
  formatItemBottom(item, metadata, line) {
19031
+ if (typeof item === "string") return item;
17928
19032
  if (item instanceof (0, $5e9ede69210ec54a$export$2e2bcd8739ae039) && item.isRenderable()) return item.value || "";
17929
- if (item instanceof (0, $d454f4215ba01af2$export$2e2bcd8739ae039)) return (0, $21a34a464e7bc609$export$bc3bea8325045070)(item.lyrics || "", this.chordLyricsPairLength(item, line));
17930
- if ("evaluate" in item) return item.evaluate(metadata, this.configuration.get("metadata.separator"));
19033
+ if (item instanceof (0, $d454f4215ba01af2$export$2e2bcd8739ae039)) return this.formatChordLyricsPair(item, line);
19034
+ if ("evaluate" in item) return this.formatEvaluatable(item, metadata);
17931
19035
  return "";
17932
19036
  }
19037
+ formatEvaluatable(item, metadata) {
19038
+ return item.evaluate(metadata, this.configuration.get("metadata.separator"));
19039
+ }
19040
+ formatChordLyricsPair(item, line) {
19041
+ return (0, $21a34a464e7bc609$export$bc3bea8325045070)(item.lyrics || "", this.chordLyricsPairLength(item, line));
19042
+ }
17933
19043
  constructor(...args){
17934
19044
  super(...args);
17935
19045
  this.song = new (0, $6f653df65dfdf4ef$export$2e2bcd8739ae039)();
@@ -17938,7 +19048,6 @@ var $376e205ced98486b$export$2e2bcd8739ae039 = {
17938
19048
  var $8906a355dee27f2c$export$2e2bcd8739ae039 = $8906a355dee27f2c$var$ChordsOverWordsFormatter;
17939
19049
 
17940
19050
 
17941
-
17942
19051
  // eslint-disable-next-line import/prefer-default-export
17943
19052
  function $9e2fd0525d9e4483$export$9f6ee93f4e2fb3d2(string) {
17944
19053
  const result = /(\s+)(\S+)/.exec(string);
@@ -30177,6 +31286,8 @@ function $3df1df9cc0f1cab9$var$peg$parse(input, options) {
30177
31286
  const $3df1df9cc0f1cab9$export$98e6a39c04603d36 = $3df1df9cc0f1cab9$var$peg$parse;
30178
31287
 
30179
31288
 
31289
+
31290
+
30180
31291
  /**
30181
31292
  * Parses a chords over words sheet into a song
30182
31293
  *
@@ -30214,13 +31325,24 @@ const $3df1df9cc0f1cab9$export$98e6a39c04603d36 = $3df1df9cc0f1cab9$var$peg$pars
30214
31325
  * Whisper words of wisdom, let it be
30215
31326
  *
30216
31327
  * `ChordsOverWordsParser` is the better version of `ChordSheetParser`, which is deprecated.
30217
- */ class $c5e7c9181f4c1376$var$ChordsOverWordsParser extends (0, $6af2b7a7ad6b2cba$export$2e2bcd8739ae039) {
31328
+ */ class $c5e7c9181f4c1376$var$ChordsOverWordsParser {
31329
+ /**
31330
+ * All warnings raised during parsing the chord sheet
31331
+ * @member
31332
+ * @type {ParserWarning[]}
31333
+ */ get warnings() {
31334
+ return this.song?.warnings || [];
31335
+ }
30218
31336
  /**
30219
31337
  * Parses a chords over words sheet into a song
30220
- * @param {string} chordsOverWordsSheet the chords over words sheet
31338
+ * @param {string} chordSheet the chords over words sheet
31339
+ * @param {ParseOptions} options Parser options.
31340
+ * @see https://peggyjs.org/documentation.html#using-the-parser
30221
31341
  * @returns {Song} The parsed song
30222
- */ parse(chordsOverWordsSheet) {
30223
- return this.parseWithParser(`${chordsOverWordsSheet}`, (0, $3df1df9cc0f1cab9$export$98e6a39c04603d36));
31342
+ */ parse(chordSheet, options) {
31343
+ const ast = (0, $3df1df9cc0f1cab9$export$98e6a39c04603d36)((0, $21a34a464e7bc609$export$ba13e0e2f19e61a1)(chordSheet), options);
31344
+ this.song = new (0, $1c14afc274b727b7$export$2e2bcd8739ae039)().deserialize(ast);
31345
+ return this.song;
30224
31346
  }
30225
31347
  }
30226
31348
  var $c5e7c9181f4c1376$export$2e2bcd8739ae039 = $c5e7c9181f4c1376$var$ChordsOverWordsParser;
@@ -30279,50 +31401,53 @@ var $d834af97c9a2e4df$export$2e2bcd8739ae039 = $d834af97c9a2e4df$var$HtmlFormatt
30279
31401
 
30280
31402
 
30281
31403
 
30282
- var $93f055b77b2d269f$export$2e2bcd8739ae039 = ({ configuration: configuration, configuration: { key: key }, song: song, renderBlankLines: renderBlankLines = false, song: { title: title, subtitle: subtitle, metadata: metadata }, bodyParagraphs: bodyParagraphs })=>(0, $376e205ced98486b$export$6ea1b0eb82ead3f)(`
31404
+ var $93f055b77b2d269f$export$2e2bcd8739ae039 = ({ configuration: configuration, configuration: { key: key, delegates: delegates }, song: song, renderBlankLines: renderBlankLines = false, song: { title: title, subtitle: subtitle, metadata: metadata }, bodyParagraphs: bodyParagraphs })=>(0, $376e205ced98486b$export$6ea1b0eb82ead3f)(`
30283
31405
  ${(0, $376e205ced98486b$export$a55877ca9db47377)(title, ()=>`<h1>${title}</h1>`)}
30284
31406
  ${(0, $376e205ced98486b$export$a55877ca9db47377)(subtitle, ()=>`<h2>${subtitle}</h2>`)}
30285
31407
 
30286
31408
  <div class="chord-sheet">
30287
31409
  ${(0, $376e205ced98486b$export$79b2f7037acddd43)(bodyParagraphs, (paragraph)=>`
30288
31410
  <div class="${(0, $376e205ced98486b$export$dcd1550c9709312c)(paragraph)}">
30289
- ${(0, $376e205ced98486b$export$79b2f7037acddd43)(paragraph.lines, (line)=>`
30290
- ${(0, $376e205ced98486b$export$a55877ca9db47377)(renderBlankLines || (0, $376e205ced98486b$export$3db5961874282581)(line), ()=>`
30291
- <div class="${(0, $376e205ced98486b$export$8a559c16cc3576)(line)}">
30292
- ${(0, $376e205ced98486b$export$79b2f7037acddd43)(line.items, (item)=>`
30293
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$17c9e635b932873b)(item), ()=>`
30294
- <div class="column">
30295
- ${(0, $376e205ced98486b$export$a55877ca9db47377)(item.annotation).then(()=>`
30296
- <div class="annotation"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.chordFont)}>${item.annotation}</div>
30297
- `).else(()=>`
30298
- <div class="chord"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.chordFont)}>${(0, $dfecd32049fa58e9$export$596ec52955da9472)(item.chords, line, song, {
30299
- renderKey: key,
30300
- useUnicodeModifier: configuration.useUnicodeModifiers,
30301
- normalizeChords: configuration.normalizeChords
30302
- })}</div>
30303
- `)}
30304
- <div class="lyrics"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${item.lyrics}</div>
30305
- </div>
30306
- `)}
30307
-
30308
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$3bf645f08efe3292)(item), ()=>`
30309
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$3ab01370f5e64ac8)(item), ()=>`
30310
- <div class="comment">${item.value}</div>
30311
- `)}
30312
-
30313
- ${(0, $376e205ced98486b$export$a55877ca9db47377)(item.hasRenderableLabel(), ()=>`
30314
- <h3 class="label">${item.value}</h3>
31411
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)(paragraph.isLiteral(), ()=>`
31412
+ <div class="row">
31413
+ <h3 class="label">${paragraph.label}</h3>
31414
+ <div class="literal">${(0, $376e205ced98486b$export$e2953cc935d48476)((0, $376e205ced98486b$export$4c0287abd2ec956e)(paragraph, configuration))}</div>
31415
+ </div>
31416
+ `).else(()=>`
31417
+ ${(0, $376e205ced98486b$export$79b2f7037acddd43)(paragraph.lines, (line)=>`
31418
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)(renderBlankLines || (0, $376e205ced98486b$export$3db5961874282581)(line), ()=>`
31419
+ <div class="${(0, $376e205ced98486b$export$8a559c16cc3576)(line)}">
31420
+ ${(0, $376e205ced98486b$export$79b2f7037acddd43)(line.items, (item)=>`
31421
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$17c9e635b932873b)(item), ()=>`
31422
+ <div class="column">
31423
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)(item.annotation).then(()=>`
31424
+ <div class="annotation"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.chordFont)}>${item.annotation}</div>
31425
+ `).else(()=>`
31426
+ <div class="chord"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.chordFont)}>${(0, $dfecd32049fa58e9$export$596ec52955da9472)(item.chords, line, song, {
31427
+ renderKey: key,
31428
+ useUnicodeModifier: configuration.useUnicodeModifiers,
31429
+ normalizeChords: configuration.normalizeChords
31430
+ })}</div>
31431
+ `)}
31432
+ <div class="lyrics"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${item.lyrics}</div>
31433
+ </div>
31434
+ `).elseWhen((0, $376e205ced98486b$export$3bf645f08efe3292)(item), ()=>`
31435
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$3ab01370f5e64ac8)(item), ()=>`
31436
+ <div class="comment">${item.value}</div>
31437
+ `)}
31438
+
31439
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)(item.hasRenderableLabel(), ()=>`
31440
+ <h3 class="label">${item.value}</h3>
31441
+ `)}
31442
+ `).elseWhen((0, $21a34a464e7bc609$export$e3f63561d52b936d)(item), ()=>`
31443
+ <div class="column">
31444
+ <div class="chord"></div>
31445
+ <div class="lyrics"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${(0, $376e205ced98486b$export$fef61f332f2c0afc)(item, metadata, configuration)}</div>
31446
+ </div>
30315
31447
  `)}
30316
31448
  `)}
30317
-
30318
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $21a34a464e7bc609$export$e3f63561d52b936d)(item), ()=>`
30319
- <div class="column">
30320
- <div class="chord"></div>
30321
- <div class="lyrics"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${(0, $376e205ced98486b$export$fef61f332f2c0afc)(item, metadata, configuration)}</div>
30322
- </div>
30323
- `)}
30324
- `)}
30325
- </div>
31449
+ </div>
31450
+ `)}
30326
31451
  `)}
30327
31452
  `)}
30328
31453
  </div>
@@ -30369,7 +31494,7 @@ var $ee0c149cc33dc156$export$2e2bcd8739ae039 = $ee0c149cc33dc156$var$HtmlDivForm
30369
31494
 
30370
31495
 
30371
31496
 
30372
- var $5381a6b1b90601c7$export$2e2bcd8739ae039 = ({ configuration: configuration, configuration: { key: key }, song: song, renderBlankLines: renderBlankLines = false, song: { title: title, subtitle: subtitle, bodyLines: bodyLines, metadata: metadata }, bodyParagraphs: bodyParagraphs })=>(0, $376e205ced98486b$export$6ea1b0eb82ead3f)(`
31497
+ var $5381a6b1b90601c7$export$2e2bcd8739ae039 = ({ configuration: configuration, configuration: { key: key, delegates: delegates }, song: song, renderBlankLines: renderBlankLines = false, song: { title: title, subtitle: subtitle, bodyLines: bodyLines, metadata: metadata }, bodyParagraphs: bodyParagraphs })=>(0, $376e205ced98486b$export$6ea1b0eb82ead3f)(`
30373
31498
  ${(0, $376e205ced98486b$export$a55877ca9db47377)(title, ()=>`<h1>${title}</h1>`)}
30374
31499
  ${(0, $376e205ced98486b$export$a55877ca9db47377)(subtitle, ()=>`<h2>${subtitle}</h2>`)}
30375
31500
 
@@ -30377,51 +31502,58 @@ var $5381a6b1b90601c7$export$2e2bcd8739ae039 = ({ configuration: configuration,
30377
31502
  <div class="chord-sheet">
30378
31503
  ${(0, $376e205ced98486b$export$79b2f7037acddd43)(bodyParagraphs, (paragraph)=>`
30379
31504
  <div class="${(0, $376e205ced98486b$export$dcd1550c9709312c)(paragraph)}">
30380
- ${(0, $376e205ced98486b$export$79b2f7037acddd43)(paragraph.lines, (line)=>`
30381
- ${(0, $376e205ced98486b$export$a55877ca9db47377)(renderBlankLines || (0, $376e205ced98486b$export$3db5961874282581)(line), ()=>`
30382
- <table class="${(0, $376e205ced98486b$export$8a559c16cc3576)(line)}">
30383
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $21a34a464e7bc609$export$d332d76d125f0cbe)(line), ()=>`
30384
- <tr>
30385
- ${(0, $376e205ced98486b$export$79b2f7037acddd43)(line.items, (item)=>`
30386
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$17c9e635b932873b)(item), ()=>`
30387
- ${(0, $376e205ced98486b$export$a55877ca9db47377)(item.annotation).then(()=>`
30388
- <td class="annotation"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.chordFont)}>${item.annotation}</td>
30389
- `).else(()=>`
30390
- <td class="chord"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.chordFont)}>${(0, $dfecd32049fa58e9$export$596ec52955da9472)(item.chords, line, song, {
30391
- renderKey: key,
30392
- useUnicodeModifier: configuration.useUnicodeModifiers,
30393
- normalizeChords: configuration.normalizeChords
30394
- })}</td>
31505
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)(paragraph.isLiteral(), ()=>`
31506
+ <table class="literal">
31507
+ <tr>
31508
+ <td class="label">${paragraph.label}</td>
31509
+ <td class="contents">${(0, $376e205ced98486b$export$e2953cc935d48476)((0, $376e205ced98486b$export$4c0287abd2ec956e)(paragraph, configuration))}</td>
31510
+ </tr>
31511
+ </table>
31512
+ `).else(()=>`
31513
+ ${(0, $376e205ced98486b$export$79b2f7037acddd43)(paragraph.lines, (line)=>`
31514
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)(renderBlankLines || (0, $376e205ced98486b$export$3db5961874282581)(line), ()=>`
31515
+ <table class="${(0, $376e205ced98486b$export$8a559c16cc3576)(line)}">
31516
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $21a34a464e7bc609$export$d332d76d125f0cbe)(line), ()=>`
31517
+ <tr>
31518
+ ${(0, $376e205ced98486b$export$79b2f7037acddd43)(line.items, (item)=>`
31519
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$17c9e635b932873b)(item), ()=>`
31520
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)(item.annotation).then(()=>`
31521
+ <td class="annotation"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.chordFont)}>${item.annotation}</td>
31522
+ `).else(()=>`
31523
+ <td class="chord"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.chordFont)}>${(0, $dfecd32049fa58e9$export$596ec52955da9472)(item.chords, line, song, {
31524
+ renderKey: key,
31525
+ useUnicodeModifier: configuration.useUnicodeModifiers,
31526
+ normalizeChords: configuration.normalizeChords
31527
+ })}</td>
31528
+ `)}
30395
31529
  `)}
30396
31530
  `)}
30397
- `)}
30398
- </tr>
30399
- `)}
30400
-
30401
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$b8d631d9200974fa)(line), ()=>`
30402
- <tr>
30403
- ${(0, $376e205ced98486b$export$79b2f7037acddd43)(line.items, (item)=>`
30404
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$17c9e635b932873b)(item), ()=>`
30405
- <td class="lyrics"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${item.lyrics}</td>
30406
- `)}
30407
-
30408
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$3bf645f08efe3292)(item), ()=>`
30409
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$3ab01370f5e64ac8)(item), ()=>`
30410
- <td class="comment"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${item.value}</td>
30411
- `)}
30412
-
30413
- ${(0, $376e205ced98486b$export$a55877ca9db47377)(item.hasRenderableLabel(), ()=>`
30414
- <td><h3 class="label"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${item.value}</h3></td>
31531
+ </tr>
31532
+ `)}
31533
+
31534
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$b8d631d9200974fa)(line), ()=>`
31535
+ <tr>
31536
+ ${(0, $376e205ced98486b$export$79b2f7037acddd43)(line.items, (item)=>`
31537
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$17c9e635b932873b)(item), ()=>`
31538
+ <td class="lyrics"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${item.lyrics}</td>
31539
+ `).elseWhen((0, $376e205ced98486b$export$3bf645f08efe3292)(item), ()=>`
31540
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $376e205ced98486b$export$3ab01370f5e64ac8)(item), ()=>`
31541
+ <td class="comment"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${item.value}</td>
31542
+ `)}
31543
+
31544
+ ${(0, $376e205ced98486b$export$a55877ca9db47377)(item.hasRenderableLabel(), ()=>`
31545
+ <td><h3 class="label"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${item.value}</h3></td>
31546
+ `)}
31547
+ `).elseWhen((0, $376e205ced98486b$export$899158ea22bb4609)(item), ()=>`
31548
+ <td class="literal">${item.string}</td>
31549
+ `).elseWhen((0, $21a34a464e7bc609$export$e3f63561d52b936d)(item), ()=>`
31550
+ <td class="lyrics"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${(0, $376e205ced98486b$export$fef61f332f2c0afc)(item, metadata, configuration)}</td>
30415
31551
  `)}
30416
31552
  `)}
30417
-
30418
- ${(0, $376e205ced98486b$export$a55877ca9db47377)((0, $21a34a464e7bc609$export$e3f63561d52b936d)(item), ()=>`
30419
- <td class="lyrics"${(0, $376e205ced98486b$export$ca030c9435779e4b)(line.textFont)}>${(0, $376e205ced98486b$export$fef61f332f2c0afc)(item, metadata, configuration)}</td>
30420
- `)}
30421
- `)}
30422
- </tr>
30423
- `)}
30424
- </table>
31553
+ </tr>
31554
+ `)}
31555
+ </table>
31556
+ `)}
30425
31557
  `)}
30426
31558
  `)}
30427
31559
  </div>
@@ -30513,6 +31645,10 @@ var $5b02ea769c63fd56$export$2e2bcd8739ae039 = $5b02ea769c63fd56$var$HtmlTableFo
30513
31645
  return (expandChorusDirective ? expandedBodyParagraphs : bodyParagraphs).map((paragraph)=>this.formatParagraph(paragraph, metadata)).join("\n\n");
30514
31646
  }
30515
31647
  formatParagraph(paragraph, metadata) {
31648
+ if (paragraph.isLiteral()) return [
31649
+ paragraph.label,
31650
+ (0, $376e205ced98486b$export$4c0287abd2ec956e)(paragraph, this.configuration)
31651
+ ].filter((part)=>part).join("\n");
30516
31652
  return paragraph.lines.filter((line)=>line.hasRenderableItems()).map((line)=>this.formatLine(line, metadata)).join("\n");
30517
31653
  }
30518
31654
  formatLine(line, metadata) {