chordsheetjs 7.6.0 → 7.7.0

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/module.js CHANGED
@@ -1,5 +1,9 @@
1
1
  import $iPNDK$lodashget from "lodash.get";
2
2
 
3
+ // Generated by peggy v. 2.0.1 (ts-pegjs plugin v. 2.1.0 )
4
+ //
5
+ // https://peggyjs.org/ https://github.com/metadevpro/ts-pegjs
6
+ "use strict";
3
7
  function $182dbf639c88db75$var$peg$padEnd(str, targetLength, padString) {
4
8
  padString = padString || " ";
5
9
  if (str.length > targetLength) return str;
@@ -98,7 +102,9 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
98
102
  options = options !== undefined ? options : {};
99
103
  const peg$FAILED = {};
100
104
  const peg$source = options.grammarSource;
101
- const peg$startRuleFunctions = {};
105
+ const peg$startRuleFunctions = {
106
+ ChordSheet: peg$parseChordSheet
107
+ };
102
108
  let peg$startRuleFunction = peg$parseChordSheet;
103
109
  const peg$c0 = function(lines, line) {
104
110
  return {
@@ -130,93 +136,100 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
130
136
  comment ? {
131
137
  type: "comment",
132
138
  comment: comment
133
- } : null
139
+ } : null,
134
140
  ].filter((x)=>x)
135
141
  };
136
142
  };
137
- const peg$c3 = "#";
138
- const peg$c4 = peg$literalExpectation("#", false);
139
- const peg$c5 = /^[^\r\n]/;
140
- const peg$c6 = peg$classExpectation([
143
+ const peg$c3 = function(lyrics) {
144
+ return {
145
+ type: "chordLyricsPair",
146
+ chords: "",
147
+ lyrics: lyrics
148
+ };
149
+ };
150
+ const peg$c4 = "#";
151
+ const peg$c5 = peg$literalExpectation("#", false);
152
+ const peg$c6 = /^[^\r\n]/;
153
+ const peg$c7 = peg$classExpectation([
141
154
  "\r",
142
155
  "\n"
143
156
  ], true, false);
144
- const peg$c7 = function(comment) {
157
+ const peg$c8 = function(comment) {
145
158
  return comment;
146
159
  };
147
- const peg$c8 = function(chords, lyrics) {
160
+ const peg$c9 = function(chords, lyrics, space) {
148
161
  return {
149
162
  type: "chordLyricsPair",
150
163
  chords: chords || "",
151
- lyrics: lyrics
164
+ lyrics: lyrics + (space || "")
152
165
  };
153
166
  };
154
- const peg$c9 = function(lyrics) {
167
+ const peg$c10 = function(lyrics) {
155
168
  return lyrics.map((c)=>c.char || c).join("");
156
169
  };
157
- const peg$c10 = "[";
158
- const peg$c11 = peg$literalExpectation("[", false);
159
- const peg$c12 = "]";
160
- const peg$c13 = peg$literalExpectation("]", false);
161
- const peg$c14 = function(chords) {
170
+ const peg$c11 = "[";
171
+ const peg$c12 = peg$literalExpectation("[", false);
172
+ const peg$c13 = "]";
173
+ const peg$c14 = peg$literalExpectation("]", false);
174
+ const peg$c15 = function(chords) {
162
175
  return chords.map((c)=>c.char || c).join("");
163
176
  };
164
- const peg$c15 = /^[^\]\r\n]/;
165
- const peg$c16 = peg$classExpectation([
177
+ const peg$c16 = /^[^\]\r\n]/;
178
+ const peg$c17 = peg$classExpectation([
166
179
  "]",
167
180
  "\r",
168
181
  "\n"
169
182
  ], true, false);
170
- const peg$c17 = "\\";
171
- const peg$c18 = peg$literalExpectation("\\", false);
172
- const peg$c19 = function() {
183
+ const peg$c18 = "\\";
184
+ const peg$c19 = peg$literalExpectation("\\", false);
185
+ const peg$c20 = function() {
173
186
  return {
174
187
  type: "char",
175
188
  char: "\\"
176
189
  };
177
190
  };
178
- const peg$c20 = function() {
191
+ const peg$c21 = function() {
179
192
  return {
180
193
  type: "char",
181
194
  char: "]"
182
195
  };
183
196
  };
184
- const peg$c21 = function(sequence) {
197
+ const peg$c22 = function(sequence) {
185
198
  return sequence;
186
199
  };
187
- const peg$c22 = "%{";
188
- const peg$c23 = peg$literalExpectation("%{", false);
189
- const peg$c24 = "}";
190
- const peg$c25 = peg$literalExpectation("}", false);
191
- const peg$c26 = function(variableName, valueTest, expressions) {
200
+ const peg$c23 = "%{";
201
+ const peg$c24 = peg$literalExpectation("%{", false);
202
+ const peg$c25 = "}";
203
+ const peg$c26 = peg$literalExpectation("}", false);
204
+ const peg$c27 = function(variableName, valueTest, expressions) {
192
205
  return {
193
- "type": "ternary",
206
+ type: "ternary",
194
207
  variable: variableName.length > 0 ? variableName : null,
195
208
  valueTest: valueTest,
196
209
  ...expressions,
197
210
  location: location().start
198
211
  };
199
212
  };
200
- const peg$c27 = "=";
201
- const peg$c28 = peg$literalExpectation("=", false);
202
- const peg$c29 = function(testValue) {
213
+ const peg$c28 = "=";
214
+ const peg$c29 = peg$literalExpectation("=", false);
215
+ const peg$c30 = function(testValue) {
203
216
  return testValue;
204
217
  };
205
- const peg$c30 = "|";
206
- const peg$c31 = peg$literalExpectation("|", false);
207
- const peg$c32 = function(trueExpression, falseExpression) {
218
+ const peg$c31 = "|";
219
+ const peg$c32 = peg$literalExpectation("|", false);
220
+ const peg$c33 = function(trueExpression, falseExpression) {
208
221
  return {
209
- "type": "ternary",
222
+ type: "ternary",
210
223
  trueExpression: trueExpression,
211
224
  falseExpression: falseExpression,
212
225
  location: location().start
213
226
  };
214
227
  };
215
- const peg$c33 = function(falseExpression) {
228
+ const peg$c34 = function(falseExpression) {
216
229
  return falseExpression;
217
230
  };
218
- const peg$c34 = /^[a-zA-Z0-9\-_]/;
219
- const peg$c35 = peg$classExpectation([
231
+ const peg$c35 = /^[a-zA-Z0-9\-_]/;
232
+ const peg$c36 = peg$classExpectation([
220
233
  [
221
234
  "a",
222
235
  "z"
@@ -232,20 +245,26 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
232
245
  "-",
233
246
  "_"
234
247
  ], false, false);
235
- const peg$c36 = function() {
248
+ const peg$c37 = function() {
249
+ return {
250
+ type: "char",
251
+ char: "]"
252
+ };
253
+ };
254
+ const peg$c38 = function() {
236
255
  return {
237
256
  type: "char",
238
257
  char: "|"
239
258
  };
240
259
  };
241
- const peg$c37 = function() {
260
+ const peg$c39 = function() {
242
261
  return {
243
262
  type: "char",
244
263
  char: "}"
245
264
  };
246
265
  };
247
- const peg$c38 = /^[^|[\]\\{}%#\r\n]/;
248
- const peg$c39 = peg$classExpectation([
266
+ const peg$c40 = /^[^|[\]\\{}%#\r\n\t ]/;
267
+ const peg$c41 = peg$classExpectation([
249
268
  "|",
250
269
  "[",
251
270
  "]",
@@ -255,37 +274,45 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
255
274
  "%",
256
275
  "#",
257
276
  "\r",
258
- "\n"
277
+ "\n",
278
+ " ",
279
+ " "
259
280
  ], true, false);
260
- const peg$c40 = function() {
281
+ const peg$c42 = function() {
261
282
  return {
262
283
  type: "char",
263
- char: "["
284
+ char: "\\"
264
285
  };
265
286
  };
266
- const peg$c41 = "{";
267
- const peg$c42 = peg$literalExpectation("{", false);
268
287
  const peg$c43 = function() {
269
288
  return {
270
289
  type: "char",
271
- char: "{"
290
+ char: "["
272
291
  };
273
292
  };
274
- const peg$c44 = "%";
275
- const peg$c45 = peg$literalExpectation("%", false);
293
+ const peg$c44 = "{";
294
+ const peg$c45 = peg$literalExpectation("{", false);
276
295
  const peg$c46 = function() {
296
+ return {
297
+ type: "char",
298
+ char: "{"
299
+ };
300
+ };
301
+ const peg$c47 = "%";
302
+ const peg$c48 = peg$literalExpectation("%", false);
303
+ const peg$c49 = function() {
277
304
  return {
278
305
  type: "char",
279
306
  char: "%"
280
307
  };
281
308
  };
282
- const peg$c47 = function() {
309
+ const peg$c50 = function() {
283
310
  return {
284
311
  type: "char",
285
312
  char: "#"
286
313
  };
287
314
  };
288
- const peg$c48 = function(tagName, tagColonWithValue) {
315
+ const peg$c51 = function(tagName, tagColonWithValue) {
289
316
  return {
290
317
  type: "tag",
291
318
  name: tagName,
@@ -293,13 +320,13 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
293
320
  location: location().start
294
321
  };
295
322
  };
296
- const peg$c49 = ":";
297
- const peg$c50 = peg$literalExpectation(":", false);
298
- const peg$c51 = function(tagValue) {
323
+ const peg$c52 = ":";
324
+ const peg$c53 = peg$literalExpectation(":", false);
325
+ const peg$c54 = function(tagValue) {
299
326
  return tagValue.map((c)=>c.char || c).join("");
300
327
  };
301
- const peg$c52 = /^[a-zA-Z\-_]/;
302
- const peg$c53 = peg$classExpectation([
328
+ const peg$c55 = /^[a-zA-Z\-_]/;
329
+ const peg$c56 = peg$classExpectation([
303
330
  [
304
331
  "a",
305
332
  "z"
@@ -311,31 +338,31 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
311
338
  "-",
312
339
  "_"
313
340
  ], false, false);
314
- const peg$c54 = /^[^}\\\r\n]/;
315
- const peg$c55 = peg$classExpectation([
341
+ const peg$c57 = /^[^}\\\r\n]/;
342
+ const peg$c58 = peg$classExpectation([
316
343
  "}",
317
344
  "\\",
318
345
  "\r",
319
346
  "\n"
320
347
  ], true, false);
321
- const peg$c56 = peg$otherExpectation("whitespace");
322
- const peg$c57 = /^[ \t\n\r]/;
323
- const peg$c58 = peg$classExpectation([
348
+ const peg$c59 = peg$otherExpectation("whitespace");
349
+ const peg$c60 = /^[ \t\n\r]/;
350
+ const peg$c61 = peg$classExpectation([
324
351
  " ",
325
352
  " ",
326
353
  "\n",
327
354
  "\r"
328
355
  ], false, false);
329
- const peg$c59 = peg$otherExpectation("space");
330
- const peg$c60 = /^[ \t]/;
331
- const peg$c61 = peg$classExpectation([
356
+ const peg$c62 = peg$otherExpectation("space");
357
+ const peg$c63 = /^[ \t]/;
358
+ const peg$c64 = peg$classExpectation([
332
359
  " ",
333
360
  " "
334
361
  ], false, false);
335
- const peg$c62 = "\n";
336
- const peg$c63 = peg$literalExpectation("\n", false);
337
- const peg$c64 = "\r";
338
- const peg$c65 = peg$literalExpectation("\r", false);
362
+ const peg$c65 = "\n";
363
+ const peg$c66 = peg$literalExpectation("\n", false);
364
+ const peg$c67 = "\r";
365
+ const peg$c68 = peg$literalExpectation("\r", false);
339
366
  let peg$currPos = 0;
340
367
  let peg$savedPos = 0;
341
368
  const peg$posDetailsCache = [
@@ -502,8 +529,11 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
502
529
  function peg$parseLine() {
503
530
  let s0, s1, s2, s3, s4, s5, s6;
504
531
  s0 = peg$currPos;
505
- s1 = peg$parseLyrics();
506
- if (s1 === peg$FAILED) s1 = null;
532
+ s1 = peg$currPos;
533
+ s2 = peg$parseLyrics();
534
+ if (s2 === peg$FAILED) s2 = null;
535
+ if (s2 !== peg$FAILED) s1 = input.substring(s1, peg$currPos);
536
+ else s1 = s2;
507
537
  if (s1 !== peg$FAILED) {
508
538
  s2 = [];
509
539
  s3 = peg$parseToken();
@@ -551,11 +581,22 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
551
581
  return s0;
552
582
  }
553
583
  function peg$parseToken() {
554
- let s0;
584
+ let s0, s1;
555
585
  s0 = peg$parseTag();
556
586
  if (s0 === peg$FAILED) {
557
587
  s0 = peg$parseChordLyricsPair();
558
- if (s0 === peg$FAILED) s0 = peg$parseMetaTernary();
588
+ if (s0 === peg$FAILED) {
589
+ s0 = peg$parseMetaTernary();
590
+ if (s0 === peg$FAILED) {
591
+ s0 = peg$currPos;
592
+ s1 = peg$parseLyrics();
593
+ if (s1 !== peg$FAILED) {
594
+ peg$savedPos = s0;
595
+ s1 = peg$c3(s1);
596
+ }
597
+ s0 = s1;
598
+ }
599
+ }
559
600
  }
560
601
  return s0;
561
602
  }
@@ -566,37 +607,37 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
566
607
  if (s1 === peg$FAILED) s1 = null;
567
608
  if (s1 !== peg$FAILED) {
568
609
  if (input.charCodeAt(peg$currPos) === 35) {
569
- s2 = peg$c3;
610
+ s2 = peg$c4;
570
611
  peg$currPos++;
571
612
  } else {
572
613
  s2 = peg$FAILED;
573
- if (peg$silentFails === 0) peg$fail(peg$c4);
614
+ if (peg$silentFails === 0) peg$fail(peg$c5);
574
615
  }
575
616
  if (s2 !== peg$FAILED) {
576
617
  s3 = peg$currPos;
577
618
  s4 = [];
578
- if (peg$c5.test(input.charAt(peg$currPos))) {
619
+ if (peg$c6.test(input.charAt(peg$currPos))) {
579
620
  s5 = input.charAt(peg$currPos);
580
621
  peg$currPos++;
581
622
  } else {
582
623
  s5 = peg$FAILED;
583
- if (peg$silentFails === 0) peg$fail(peg$c6);
624
+ if (peg$silentFails === 0) peg$fail(peg$c7);
584
625
  }
585
626
  while(s5 !== peg$FAILED){
586
627
  s4.push(s5);
587
- if (peg$c5.test(input.charAt(peg$currPos))) {
628
+ if (peg$c6.test(input.charAt(peg$currPos))) {
588
629
  s5 = input.charAt(peg$currPos);
589
630
  peg$currPos++;
590
631
  } else {
591
632
  s5 = peg$FAILED;
592
- if (peg$silentFails === 0) peg$fail(peg$c6);
633
+ if (peg$silentFails === 0) peg$fail(peg$c7);
593
634
  }
594
635
  }
595
636
  if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
596
637
  else s3 = s4;
597
638
  if (s3 !== peg$FAILED) {
598
639
  peg$savedPos = s0;
599
- s1 = peg$c7(s3);
640
+ s1 = peg$c8(s3);
600
641
  s0 = s1;
601
642
  } else {
602
643
  peg$currPos = s0;
@@ -613,23 +654,37 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
613
654
  return s0;
614
655
  }
615
656
  function peg$parseChordLyricsPair() {
616
- let s0, s1, s2, s3, s4;
657
+ let s0, s1, s2, s3, s4, s5;
617
658
  s0 = peg$currPos;
618
659
  s1 = peg$parseChord();
619
660
  if (s1 !== peg$FAILED) {
620
661
  s2 = peg$currPos;
621
662
  s3 = [];
622
- s4 = peg$parseLyrics();
663
+ s4 = peg$parseLyricsChar();
623
664
  while(s4 !== peg$FAILED){
624
665
  s3.push(s4);
625
- s4 = peg$parseLyrics();
666
+ s4 = peg$parseLyricsChar();
626
667
  }
627
668
  if (s3 !== peg$FAILED) s2 = input.substring(s2, peg$currPos);
628
669
  else s2 = s3;
629
670
  if (s2 !== peg$FAILED) {
630
- peg$savedPos = s0;
631
- s1 = peg$c8(s1, s2);
632
- s0 = s1;
671
+ s3 = peg$currPos;
672
+ s4 = [];
673
+ s5 = peg$parseSpace();
674
+ while(s5 !== peg$FAILED){
675
+ s4.push(s5);
676
+ s5 = peg$parseSpace();
677
+ }
678
+ if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
679
+ else s3 = s4;
680
+ if (s3 !== peg$FAILED) {
681
+ peg$savedPos = s0;
682
+ s1 = peg$c9(s1, s2, s3);
683
+ s0 = s1;
684
+ } else {
685
+ peg$currPos = s0;
686
+ s0 = peg$FAILED;
687
+ }
633
688
  } else {
634
689
  peg$currPos = s0;
635
690
  s0 = peg$FAILED;
@@ -644,19 +699,25 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
644
699
  let s0, s1, s2;
645
700
  s0 = peg$currPos;
646
701
  s1 = [];
647
- s2 = peg$parseLyricsChar();
702
+ s2 = peg$parseLyricsCharOrSpace();
648
703
  if (s2 !== peg$FAILED) while(s2 !== peg$FAILED){
649
704
  s1.push(s2);
650
- s2 = peg$parseLyricsChar();
705
+ s2 = peg$parseLyricsCharOrSpace();
651
706
  }
652
707
  else s1 = peg$FAILED;
653
708
  if (s1 !== peg$FAILED) {
654
709
  peg$savedPos = s0;
655
- s1 = peg$c9(s1);
710
+ s1 = peg$c10(s1);
656
711
  }
657
712
  s0 = s1;
658
713
  return s0;
659
714
  }
715
+ function peg$parseLyricsCharOrSpace() {
716
+ let s0;
717
+ s0 = peg$parseLyricsChar();
718
+ if (s0 === peg$FAILED) s0 = peg$parseSpace();
719
+ return s0;
720
+ }
660
721
  function peg$parseChord() {
661
722
  let s0, s1, s2, s3, s4;
662
723
  s0 = peg$currPos;
@@ -671,11 +732,11 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
671
732
  }
672
733
  if (s1 !== peg$FAILED) {
673
734
  if (input.charCodeAt(peg$currPos) === 91) {
674
- s2 = peg$c10;
735
+ s2 = peg$c11;
675
736
  peg$currPos++;
676
737
  } else {
677
738
  s2 = peg$FAILED;
678
- if (peg$silentFails === 0) peg$fail(peg$c11);
739
+ if (peg$silentFails === 0) peg$fail(peg$c12);
679
740
  }
680
741
  if (s2 !== peg$FAILED) {
681
742
  s3 = [];
@@ -686,15 +747,15 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
686
747
  }
687
748
  if (s3 !== peg$FAILED) {
688
749
  if (input.charCodeAt(peg$currPos) === 93) {
689
- s4 = peg$c12;
750
+ s4 = peg$c13;
690
751
  peg$currPos++;
691
752
  } else {
692
753
  s4 = peg$FAILED;
693
- if (peg$silentFails === 0) peg$fail(peg$c13);
754
+ if (peg$silentFails === 0) peg$fail(peg$c14);
694
755
  }
695
756
  if (s4 !== peg$FAILED) {
696
757
  peg$savedPos = s0;
697
- s1 = peg$c14(s3);
758
+ s1 = peg$c15(s3);
698
759
  s0 = s1;
699
760
  } else {
700
761
  peg$currPos = s0;
@@ -716,12 +777,12 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
716
777
  }
717
778
  function peg$parseChordChar() {
718
779
  let s0, s1, s2, s3;
719
- if (peg$c15.test(input.charAt(peg$currPos))) {
780
+ if (peg$c16.test(input.charAt(peg$currPos))) {
720
781
  s0 = input.charAt(peg$currPos);
721
782
  peg$currPos++;
722
783
  } else {
723
784
  s0 = peg$FAILED;
724
- if (peg$silentFails === 0) peg$fail(peg$c16);
785
+ if (peg$silentFails === 0) peg$fail(peg$c17);
725
786
  }
726
787
  if (s0 === peg$FAILED) {
727
788
  s0 = peg$currPos;
@@ -729,35 +790,35 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
729
790
  if (s1 !== peg$FAILED) {
730
791
  s2 = peg$currPos;
731
792
  if (input.charCodeAt(peg$currPos) === 92) {
732
- s3 = peg$c17;
793
+ s3 = peg$c18;
733
794
  peg$currPos++;
734
795
  } else {
735
796
  s3 = peg$FAILED;
736
- if (peg$silentFails === 0) peg$fail(peg$c18);
797
+ if (peg$silentFails === 0) peg$fail(peg$c19);
737
798
  }
738
799
  if (s3 !== peg$FAILED) {
739
800
  peg$savedPos = s2;
740
- s3 = peg$c19();
801
+ s3 = peg$c20();
741
802
  }
742
803
  s2 = s3;
743
804
  if (s2 === peg$FAILED) {
744
805
  s2 = peg$currPos;
745
806
  if (input.charCodeAt(peg$currPos) === 93) {
746
- s3 = peg$c12;
807
+ s3 = peg$c13;
747
808
  peg$currPos++;
748
809
  } else {
749
810
  s3 = peg$FAILED;
750
- if (peg$silentFails === 0) peg$fail(peg$c13);
811
+ if (peg$silentFails === 0) peg$fail(peg$c14);
751
812
  }
752
813
  if (s3 !== peg$FAILED) {
753
814
  peg$savedPos = s2;
754
- s3 = peg$c20();
815
+ s3 = peg$c21();
755
816
  }
756
817
  s2 = s3;
757
818
  }
758
819
  if (s2 !== peg$FAILED) {
759
820
  peg$savedPos = s0;
760
- s1 = peg$c21(s2);
821
+ s1 = peg$c22(s2);
761
822
  s0 = s1;
762
823
  } else {
763
824
  peg$currPos = s0;
@@ -773,12 +834,12 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
773
834
  function peg$parseMetaTernary() {
774
835
  let s0, s1, s2, s3, s4, s5, s6, s7, s8;
775
836
  s0 = peg$currPos;
776
- if (input.substr(peg$currPos, 2) === peg$c22) {
777
- s1 = peg$c22;
837
+ if (input.substr(peg$currPos, 2) === peg$c23) {
838
+ s1 = peg$c23;
778
839
  peg$currPos += 2;
779
840
  } else {
780
841
  s1 = peg$FAILED;
781
- if (peg$silentFails === 0) peg$fail(peg$c23);
842
+ if (peg$silentFails === 0) peg$fail(peg$c24);
782
843
  }
783
844
  if (s1 !== peg$FAILED) {
784
845
  s2 = peg$parse_();
@@ -800,15 +861,15 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
800
861
  s7 = peg$parse_();
801
862
  if (s7 !== peg$FAILED) {
802
863
  if (input.charCodeAt(peg$currPos) === 125) {
803
- s8 = peg$c24;
864
+ s8 = peg$c25;
804
865
  peg$currPos++;
805
866
  } else {
806
867
  s8 = peg$FAILED;
807
- if (peg$silentFails === 0) peg$fail(peg$c25);
868
+ if (peg$silentFails === 0) peg$fail(peg$c26);
808
869
  }
809
870
  if (s8 !== peg$FAILED) {
810
871
  peg$savedPos = s0;
811
- s1 = peg$c26(s3, s4, s6);
872
+ s1 = peg$c27(s3, s4, s6);
812
873
  s0 = s1;
813
874
  } else {
814
875
  peg$currPos = s0;
@@ -848,11 +909,11 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
848
909
  let s0, s1, s2, s3;
849
910
  s0 = peg$currPos;
850
911
  if (input.charCodeAt(peg$currPos) === 61) {
851
- s1 = peg$c27;
912
+ s1 = peg$c28;
852
913
  peg$currPos++;
853
914
  } else {
854
915
  s1 = peg$FAILED;
855
- if (peg$silentFails === 0) peg$fail(peg$c28);
916
+ if (peg$silentFails === 0) peg$fail(peg$c29);
856
917
  }
857
918
  if (s1 !== peg$FAILED) {
858
919
  s2 = peg$parse_();
@@ -860,7 +921,7 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
860
921
  s3 = peg$parseMetaTestValue();
861
922
  if (s3 !== peg$FAILED) {
862
923
  peg$savedPos = s0;
863
- s1 = peg$c29(s3);
924
+ s1 = peg$c30(s3);
864
925
  s0 = s1;
865
926
  } else {
866
927
  peg$currPos = s0;
@@ -894,11 +955,11 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
894
955
  let s0, s1, s2, s3, s4, s5, s6;
895
956
  s0 = peg$currPos;
896
957
  if (input.charCodeAt(peg$currPos) === 124) {
897
- s1 = peg$c30;
958
+ s1 = peg$c31;
898
959
  peg$currPos++;
899
960
  } else {
900
961
  s1 = peg$FAILED;
901
- if (peg$silentFails === 0) peg$fail(peg$c31);
962
+ if (peg$silentFails === 0) peg$fail(peg$c32);
902
963
  }
903
964
  if (s1 !== peg$FAILED) {
904
965
  s2 = peg$parse_();
@@ -913,7 +974,7 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
913
974
  s6 = peg$parse_();
914
975
  if (s6 !== peg$FAILED) {
915
976
  peg$savedPos = s0;
916
- s1 = peg$c32(s3, s5);
977
+ s1 = peg$c33(s3, s5);
917
978
  s0 = s1;
918
979
  } else {
919
980
  peg$currPos = s0;
@@ -945,11 +1006,11 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
945
1006
  let s0, s1, s2, s3;
946
1007
  s0 = peg$currPos;
947
1008
  if (input.charCodeAt(peg$currPos) === 124) {
948
- s1 = peg$c30;
1009
+ s1 = peg$c31;
949
1010
  peg$currPos++;
950
1011
  } else {
951
1012
  s1 = peg$FAILED;
952
- if (peg$silentFails === 0) peg$fail(peg$c31);
1013
+ if (peg$silentFails === 0) peg$fail(peg$c32);
953
1014
  }
954
1015
  if (s1 !== peg$FAILED) {
955
1016
  s2 = peg$parse_();
@@ -957,7 +1018,7 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
957
1018
  s3 = peg$parseMetaExpression();
958
1019
  if (s3 !== peg$FAILED) {
959
1020
  peg$savedPos = s0;
960
- s1 = peg$c33(s3);
1021
+ s1 = peg$c34(s3);
961
1022
  s0 = s1;
962
1023
  } else {
963
1024
  peg$currPos = s0;
@@ -976,21 +1037,21 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
976
1037
  function peg$parseMetaVariableName() {
977
1038
  let s0, s1;
978
1039
  s0 = [];
979
- if (peg$c34.test(input.charAt(peg$currPos))) {
1040
+ if (peg$c35.test(input.charAt(peg$currPos))) {
980
1041
  s1 = input.charAt(peg$currPos);
981
1042
  peg$currPos++;
982
1043
  } else {
983
1044
  s1 = peg$FAILED;
984
- if (peg$silentFails === 0) peg$fail(peg$c35);
1045
+ if (peg$silentFails === 0) peg$fail(peg$c36);
985
1046
  }
986
1047
  if (s1 !== peg$FAILED) while(s1 !== peg$FAILED){
987
1048
  s0.push(s1);
988
- if (peg$c34.test(input.charAt(peg$currPos))) {
1049
+ if (peg$c35.test(input.charAt(peg$currPos))) {
989
1050
  s1 = input.charAt(peg$currPos);
990
1051
  peg$currPos++;
991
1052
  } else {
992
1053
  s1 = peg$FAILED;
993
- if (peg$silentFails === 0) peg$fail(peg$c35);
1054
+ if (peg$silentFails === 0) peg$fail(peg$c36);
994
1055
  }
995
1056
  }
996
1057
  else s0 = peg$FAILED;
@@ -1029,47 +1090,47 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1029
1090
  }
1030
1091
  function peg$parseLyricsChar() {
1031
1092
  let s0, s1;
1032
- s0 = peg$parseChar();
1093
+ s0 = peg$parseWordChar();
1033
1094
  if (s0 === peg$FAILED) {
1034
1095
  s0 = peg$currPos;
1035
1096
  if (input.charCodeAt(peg$currPos) === 93) {
1036
- s1 = peg$c12;
1097
+ s1 = peg$c13;
1037
1098
  peg$currPos++;
1038
1099
  } else {
1039
1100
  s1 = peg$FAILED;
1040
- if (peg$silentFails === 0) peg$fail(peg$c13);
1101
+ if (peg$silentFails === 0) peg$fail(peg$c14);
1041
1102
  }
1042
1103
  if (s1 !== peg$FAILED) {
1043
1104
  peg$savedPos = s0;
1044
- s1 = peg$c20();
1105
+ s1 = peg$c37();
1045
1106
  }
1046
1107
  s0 = s1;
1047
1108
  if (s0 === peg$FAILED) {
1048
1109
  s0 = peg$currPos;
1049
1110
  if (input.charCodeAt(peg$currPos) === 124) {
1050
- s1 = peg$c30;
1111
+ s1 = peg$c31;
1051
1112
  peg$currPos++;
1052
1113
  } else {
1053
1114
  s1 = peg$FAILED;
1054
- if (peg$silentFails === 0) peg$fail(peg$c31);
1115
+ if (peg$silentFails === 0) peg$fail(peg$c32);
1055
1116
  }
1056
1117
  if (s1 !== peg$FAILED) {
1057
1118
  peg$savedPos = s0;
1058
- s1 = peg$c36();
1119
+ s1 = peg$c38();
1059
1120
  }
1060
1121
  s0 = s1;
1061
1122
  if (s0 === peg$FAILED) {
1062
1123
  s0 = peg$currPos;
1063
1124
  if (input.charCodeAt(peg$currPos) === 125) {
1064
- s1 = peg$c24;
1125
+ s1 = peg$c25;
1065
1126
  peg$currPos++;
1066
1127
  } else {
1067
1128
  s1 = peg$FAILED;
1068
- if (peg$silentFails === 0) peg$fail(peg$c25);
1129
+ if (peg$silentFails === 0) peg$fail(peg$c26);
1069
1130
  }
1070
1131
  if (s1 !== peg$FAILED) {
1071
1132
  peg$savedPos = s0;
1072
- s1 = peg$c37();
1133
+ s1 = peg$c39();
1073
1134
  }
1074
1135
  s0 = s1;
1075
1136
  }
@@ -1078,13 +1139,19 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1078
1139
  return s0;
1079
1140
  }
1080
1141
  function peg$parseChar() {
1142
+ let s0;
1143
+ s0 = peg$parseWordChar();
1144
+ if (s0 === peg$FAILED) s0 = peg$parseSpace();
1145
+ return s0;
1146
+ }
1147
+ function peg$parseWordChar() {
1081
1148
  let s0, s1, s2, s3;
1082
- if (peg$c38.test(input.charAt(peg$currPos))) {
1149
+ if (peg$c40.test(input.charAt(peg$currPos))) {
1083
1150
  s0 = input.charAt(peg$currPos);
1084
1151
  peg$currPos++;
1085
1152
  } else {
1086
1153
  s0 = peg$FAILED;
1087
- if (peg$silentFails === 0) peg$fail(peg$c39);
1154
+ if (peg$silentFails === 0) peg$fail(peg$c41);
1088
1155
  }
1089
1156
  if (s0 === peg$FAILED) {
1090
1157
  s0 = peg$currPos;
@@ -1092,113 +1159,113 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1092
1159
  if (s1 !== peg$FAILED) {
1093
1160
  s2 = peg$currPos;
1094
1161
  if (input.charCodeAt(peg$currPos) === 92) {
1095
- s3 = peg$c17;
1162
+ s3 = peg$c18;
1096
1163
  peg$currPos++;
1097
1164
  } else {
1098
1165
  s3 = peg$FAILED;
1099
- if (peg$silentFails === 0) peg$fail(peg$c18);
1166
+ if (peg$silentFails === 0) peg$fail(peg$c19);
1100
1167
  }
1101
1168
  if (s3 !== peg$FAILED) {
1102
1169
  peg$savedPos = s2;
1103
- s3 = peg$c19();
1170
+ s3 = peg$c42();
1104
1171
  }
1105
1172
  s2 = s3;
1106
1173
  if (s2 === peg$FAILED) {
1107
1174
  s2 = peg$currPos;
1108
1175
  if (input.charCodeAt(peg$currPos) === 124) {
1109
- s3 = peg$c30;
1176
+ s3 = peg$c31;
1110
1177
  peg$currPos++;
1111
1178
  } else {
1112
1179
  s3 = peg$FAILED;
1113
- if (peg$silentFails === 0) peg$fail(peg$c31);
1180
+ if (peg$silentFails === 0) peg$fail(peg$c32);
1114
1181
  }
1115
1182
  if (s3 !== peg$FAILED) {
1116
1183
  peg$savedPos = s2;
1117
- s3 = peg$c36();
1184
+ s3 = peg$c38();
1118
1185
  }
1119
1186
  s2 = s3;
1120
1187
  if (s2 === peg$FAILED) {
1121
1188
  s2 = peg$currPos;
1122
1189
  if (input.charCodeAt(peg$currPos) === 91) {
1123
- s3 = peg$c10;
1190
+ s3 = peg$c11;
1124
1191
  peg$currPos++;
1125
1192
  } else {
1126
1193
  s3 = peg$FAILED;
1127
- if (peg$silentFails === 0) peg$fail(peg$c11);
1194
+ if (peg$silentFails === 0) peg$fail(peg$c12);
1128
1195
  }
1129
1196
  if (s3 !== peg$FAILED) {
1130
1197
  peg$savedPos = s2;
1131
- s3 = peg$c40();
1198
+ s3 = peg$c43();
1132
1199
  }
1133
1200
  s2 = s3;
1134
1201
  if (s2 === peg$FAILED) {
1135
1202
  s2 = peg$currPos;
1136
1203
  if (input.charCodeAt(peg$currPos) === 93) {
1137
- s3 = peg$c12;
1204
+ s3 = peg$c13;
1138
1205
  peg$currPos++;
1139
1206
  } else {
1140
1207
  s3 = peg$FAILED;
1141
- if (peg$silentFails === 0) peg$fail(peg$c13);
1208
+ if (peg$silentFails === 0) peg$fail(peg$c14);
1142
1209
  }
1143
1210
  if (s3 !== peg$FAILED) {
1144
1211
  peg$savedPos = s2;
1145
- s3 = peg$c20();
1212
+ s3 = peg$c37();
1146
1213
  }
1147
1214
  s2 = s3;
1148
1215
  if (s2 === peg$FAILED) {
1149
1216
  s2 = peg$currPos;
1150
1217
  if (input.charCodeAt(peg$currPos) === 123) {
1151
- s3 = peg$c41;
1218
+ s3 = peg$c44;
1152
1219
  peg$currPos++;
1153
1220
  } else {
1154
1221
  s3 = peg$FAILED;
1155
- if (peg$silentFails === 0) peg$fail(peg$c42);
1222
+ if (peg$silentFails === 0) peg$fail(peg$c45);
1156
1223
  }
1157
1224
  if (s3 !== peg$FAILED) {
1158
1225
  peg$savedPos = s2;
1159
- s3 = peg$c43();
1226
+ s3 = peg$c46();
1160
1227
  }
1161
1228
  s2 = s3;
1162
1229
  if (s2 === peg$FAILED) {
1163
1230
  s2 = peg$currPos;
1164
1231
  if (input.charCodeAt(peg$currPos) === 125) {
1165
- s3 = peg$c24;
1232
+ s3 = peg$c25;
1166
1233
  peg$currPos++;
1167
1234
  } else {
1168
1235
  s3 = peg$FAILED;
1169
- if (peg$silentFails === 0) peg$fail(peg$c25);
1236
+ if (peg$silentFails === 0) peg$fail(peg$c26);
1170
1237
  }
1171
1238
  if (s3 !== peg$FAILED) {
1172
1239
  peg$savedPos = s2;
1173
- s3 = peg$c37();
1240
+ s3 = peg$c39();
1174
1241
  }
1175
1242
  s2 = s3;
1176
1243
  if (s2 === peg$FAILED) {
1177
1244
  s2 = peg$currPos;
1178
1245
  if (input.charCodeAt(peg$currPos) === 37) {
1179
- s3 = peg$c44;
1246
+ s3 = peg$c47;
1180
1247
  peg$currPos++;
1181
1248
  } else {
1182
1249
  s3 = peg$FAILED;
1183
- if (peg$silentFails === 0) peg$fail(peg$c45);
1250
+ if (peg$silentFails === 0) peg$fail(peg$c48);
1184
1251
  }
1185
1252
  if (s3 !== peg$FAILED) {
1186
1253
  peg$savedPos = s2;
1187
- s3 = peg$c46();
1254
+ s3 = peg$c49();
1188
1255
  }
1189
1256
  s2 = s3;
1190
1257
  if (s2 === peg$FAILED) {
1191
1258
  s2 = peg$currPos;
1192
1259
  if (input.charCodeAt(peg$currPos) === 35) {
1193
- s3 = peg$c3;
1260
+ s3 = peg$c4;
1194
1261
  peg$currPos++;
1195
1262
  } else {
1196
1263
  s3 = peg$FAILED;
1197
- if (peg$silentFails === 0) peg$fail(peg$c4);
1264
+ if (peg$silentFails === 0) peg$fail(peg$c5);
1198
1265
  }
1199
1266
  if (s3 !== peg$FAILED) {
1200
1267
  peg$savedPos = s2;
1201
- s3 = peg$c47();
1268
+ s3 = peg$c50();
1202
1269
  }
1203
1270
  s2 = s3;
1204
1271
  }
@@ -1210,7 +1277,7 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1210
1277
  }
1211
1278
  if (s2 !== peg$FAILED) {
1212
1279
  peg$savedPos = s0;
1213
- s1 = peg$c21(s2);
1280
+ s1 = peg$c22(s2);
1214
1281
  s0 = s1;
1215
1282
  } else {
1216
1283
  peg$currPos = s0;
@@ -1227,11 +1294,11 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1227
1294
  let s0, s1, s2, s3, s4, s5, s6, s7;
1228
1295
  s0 = peg$currPos;
1229
1296
  if (input.charCodeAt(peg$currPos) === 123) {
1230
- s1 = peg$c41;
1297
+ s1 = peg$c44;
1231
1298
  peg$currPos++;
1232
1299
  } else {
1233
1300
  s1 = peg$FAILED;
1234
- if (peg$silentFails === 0) peg$fail(peg$c42);
1301
+ if (peg$silentFails === 0) peg$fail(peg$c45);
1235
1302
  }
1236
1303
  if (s1 !== peg$FAILED) {
1237
1304
  s2 = peg$parse_();
@@ -1249,15 +1316,15 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1249
1316
  s6 = peg$parse_();
1250
1317
  if (s6 !== peg$FAILED) {
1251
1318
  if (input.charCodeAt(peg$currPos) === 125) {
1252
- s7 = peg$c24;
1319
+ s7 = peg$c25;
1253
1320
  peg$currPos++;
1254
1321
  } else {
1255
1322
  s7 = peg$FAILED;
1256
- if (peg$silentFails === 0) peg$fail(peg$c25);
1323
+ if (peg$silentFails === 0) peg$fail(peg$c26);
1257
1324
  }
1258
1325
  if (s7 !== peg$FAILED) {
1259
1326
  peg$savedPos = s0;
1260
- s1 = peg$c48(s3, s5);
1327
+ s1 = peg$c51(s3, s5);
1261
1328
  s0 = s1;
1262
1329
  } else {
1263
1330
  peg$currPos = s0;
@@ -1293,11 +1360,11 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1293
1360
  let s0, s1, s2, s3;
1294
1361
  s0 = peg$currPos;
1295
1362
  if (input.charCodeAt(peg$currPos) === 58) {
1296
- s1 = peg$c49;
1363
+ s1 = peg$c52;
1297
1364
  peg$currPos++;
1298
1365
  } else {
1299
1366
  s1 = peg$FAILED;
1300
- if (peg$silentFails === 0) peg$fail(peg$c50);
1367
+ if (peg$silentFails === 0) peg$fail(peg$c53);
1301
1368
  }
1302
1369
  if (s1 !== peg$FAILED) {
1303
1370
  s2 = peg$parse_();
@@ -1305,7 +1372,7 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1305
1372
  s3 = peg$parseTagValue();
1306
1373
  if (s3 !== peg$FAILED) {
1307
1374
  peg$savedPos = s0;
1308
- s1 = peg$c51(s3);
1375
+ s1 = peg$c54(s3);
1309
1376
  s0 = s1;
1310
1377
  } else {
1311
1378
  peg$currPos = s0;
@@ -1324,21 +1391,21 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1324
1391
  function peg$parseTagName() {
1325
1392
  let s0, s1;
1326
1393
  s0 = [];
1327
- if (peg$c52.test(input.charAt(peg$currPos))) {
1394
+ if (peg$c55.test(input.charAt(peg$currPos))) {
1328
1395
  s1 = input.charAt(peg$currPos);
1329
1396
  peg$currPos++;
1330
1397
  } else {
1331
1398
  s1 = peg$FAILED;
1332
- if (peg$silentFails === 0) peg$fail(peg$c53);
1399
+ if (peg$silentFails === 0) peg$fail(peg$c56);
1333
1400
  }
1334
1401
  if (s1 !== peg$FAILED) while(s1 !== peg$FAILED){
1335
1402
  s0.push(s1);
1336
- if (peg$c52.test(input.charAt(peg$currPos))) {
1403
+ if (peg$c55.test(input.charAt(peg$currPos))) {
1337
1404
  s1 = input.charAt(peg$currPos);
1338
1405
  peg$currPos++;
1339
1406
  } else {
1340
1407
  s1 = peg$FAILED;
1341
- if (peg$silentFails === 0) peg$fail(peg$c53);
1408
+ if (peg$silentFails === 0) peg$fail(peg$c56);
1342
1409
  }
1343
1410
  }
1344
1411
  else s0 = peg$FAILED;
@@ -1356,12 +1423,12 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1356
1423
  }
1357
1424
  function peg$parseTagValueChar() {
1358
1425
  let s0, s1, s2, s3;
1359
- if (peg$c54.test(input.charAt(peg$currPos))) {
1426
+ if (peg$c57.test(input.charAt(peg$currPos))) {
1360
1427
  s0 = input.charAt(peg$currPos);
1361
1428
  peg$currPos++;
1362
1429
  } else {
1363
1430
  s0 = peg$FAILED;
1364
- if (peg$silentFails === 0) peg$fail(peg$c55);
1431
+ if (peg$silentFails === 0) peg$fail(peg$c58);
1365
1432
  }
1366
1433
  if (s0 === peg$FAILED) {
1367
1434
  s0 = peg$currPos;
@@ -1369,50 +1436,50 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1369
1436
  if (s1 !== peg$FAILED) {
1370
1437
  s2 = peg$currPos;
1371
1438
  if (input.charCodeAt(peg$currPos) === 92) {
1372
- s3 = peg$c17;
1439
+ s3 = peg$c18;
1373
1440
  peg$currPos++;
1374
1441
  } else {
1375
1442
  s3 = peg$FAILED;
1376
- if (peg$silentFails === 0) peg$fail(peg$c18);
1443
+ if (peg$silentFails === 0) peg$fail(peg$c19);
1377
1444
  }
1378
1445
  if (s3 !== peg$FAILED) {
1379
1446
  peg$savedPos = s2;
1380
- s3 = peg$c19();
1447
+ s3 = peg$c42();
1381
1448
  }
1382
1449
  s2 = s3;
1383
1450
  if (s2 === peg$FAILED) {
1384
1451
  s2 = peg$currPos;
1385
1452
  if (input.charCodeAt(peg$currPos) === 125) {
1386
- s3 = peg$c24;
1453
+ s3 = peg$c25;
1387
1454
  peg$currPos++;
1388
1455
  } else {
1389
1456
  s3 = peg$FAILED;
1390
- if (peg$silentFails === 0) peg$fail(peg$c25);
1457
+ if (peg$silentFails === 0) peg$fail(peg$c26);
1391
1458
  }
1392
1459
  if (s3 !== peg$FAILED) {
1393
1460
  peg$savedPos = s2;
1394
- s3 = peg$c37();
1461
+ s3 = peg$c39();
1395
1462
  }
1396
1463
  s2 = s3;
1397
1464
  if (s2 === peg$FAILED) {
1398
1465
  s2 = peg$currPos;
1399
1466
  if (input.charCodeAt(peg$currPos) === 123) {
1400
- s3 = peg$c41;
1467
+ s3 = peg$c44;
1401
1468
  peg$currPos++;
1402
1469
  } else {
1403
1470
  s3 = peg$FAILED;
1404
- if (peg$silentFails === 0) peg$fail(peg$c42);
1471
+ if (peg$silentFails === 0) peg$fail(peg$c45);
1405
1472
  }
1406
1473
  if (s3 !== peg$FAILED) {
1407
1474
  peg$savedPos = s2;
1408
- s3 = peg$c43();
1475
+ s3 = peg$c46();
1409
1476
  }
1410
1477
  s2 = s3;
1411
1478
  }
1412
1479
  }
1413
1480
  if (s2 !== peg$FAILED) {
1414
1481
  peg$savedPos = s0;
1415
- s1 = peg$c21(s2);
1482
+ s1 = peg$c22(s2);
1416
1483
  s0 = s1;
1417
1484
  } else {
1418
1485
  peg$currPos = s0;
@@ -1429,27 +1496,27 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1429
1496
  let s0, s1;
1430
1497
  peg$silentFails++;
1431
1498
  s0 = [];
1432
- if (peg$c57.test(input.charAt(peg$currPos))) {
1499
+ if (peg$c60.test(input.charAt(peg$currPos))) {
1433
1500
  s1 = input.charAt(peg$currPos);
1434
1501
  peg$currPos++;
1435
1502
  } else {
1436
1503
  s1 = peg$FAILED;
1437
- if (peg$silentFails === 0) peg$fail(peg$c58);
1504
+ if (peg$silentFails === 0) peg$fail(peg$c61);
1438
1505
  }
1439
1506
  while(s1 !== peg$FAILED){
1440
1507
  s0.push(s1);
1441
- if (peg$c57.test(input.charAt(peg$currPos))) {
1508
+ if (peg$c60.test(input.charAt(peg$currPos))) {
1442
1509
  s1 = input.charAt(peg$currPos);
1443
1510
  peg$currPos++;
1444
1511
  } else {
1445
1512
  s1 = peg$FAILED;
1446
- if (peg$silentFails === 0) peg$fail(peg$c58);
1513
+ if (peg$silentFails === 0) peg$fail(peg$c61);
1447
1514
  }
1448
1515
  }
1449
1516
  peg$silentFails--;
1450
1517
  if (s0 === peg$FAILED) {
1451
1518
  s1 = peg$FAILED;
1452
- if (peg$silentFails === 0) peg$fail(peg$c56);
1519
+ if (peg$silentFails === 0) peg$fail(peg$c59);
1453
1520
  }
1454
1521
  return s0;
1455
1522
  }
@@ -1457,28 +1524,28 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1457
1524
  let s0, s1;
1458
1525
  peg$silentFails++;
1459
1526
  s0 = [];
1460
- if (peg$c60.test(input.charAt(peg$currPos))) {
1527
+ if (peg$c63.test(input.charAt(peg$currPos))) {
1461
1528
  s1 = input.charAt(peg$currPos);
1462
1529
  peg$currPos++;
1463
1530
  } else {
1464
1531
  s1 = peg$FAILED;
1465
- if (peg$silentFails === 0) peg$fail(peg$c61);
1532
+ if (peg$silentFails === 0) peg$fail(peg$c64);
1466
1533
  }
1467
1534
  if (s1 !== peg$FAILED) while(s1 !== peg$FAILED){
1468
1535
  s0.push(s1);
1469
- if (peg$c60.test(input.charAt(peg$currPos))) {
1536
+ if (peg$c63.test(input.charAt(peg$currPos))) {
1470
1537
  s1 = input.charAt(peg$currPos);
1471
1538
  peg$currPos++;
1472
1539
  } else {
1473
1540
  s1 = peg$FAILED;
1474
- if (peg$silentFails === 0) peg$fail(peg$c61);
1541
+ if (peg$silentFails === 0) peg$fail(peg$c64);
1475
1542
  }
1476
1543
  }
1477
1544
  else s0 = peg$FAILED;
1478
1545
  peg$silentFails--;
1479
1546
  if (s0 === peg$FAILED) {
1480
1547
  s1 = peg$FAILED;
1481
- if (peg$silentFails === 0) peg$fail(peg$c59);
1548
+ if (peg$silentFails === 0) peg$fail(peg$c62);
1482
1549
  }
1483
1550
  return s0;
1484
1551
  }
@@ -1516,55 +1583,55 @@ function $182dbf639c88db75$var$peg$parse(input, options) {
1516
1583
  function peg$parseLineFeed() {
1517
1584
  let s0;
1518
1585
  if (input.charCodeAt(peg$currPos) === 10) {
1519
- s0 = peg$c62;
1586
+ s0 = peg$c65;
1520
1587
  peg$currPos++;
1521
1588
  } else {
1522
1589
  s0 = peg$FAILED;
1523
- if (peg$silentFails === 0) peg$fail(peg$c63);
1590
+ if (peg$silentFails === 0) peg$fail(peg$c66);
1524
1591
  }
1525
1592
  return s0;
1526
1593
  }
1527
1594
  function peg$parseCarriageReturn() {
1528
1595
  let s0;
1529
1596
  if (input.charCodeAt(peg$currPos) === 13) {
1530
- s0 = peg$c64;
1597
+ s0 = peg$c67;
1531
1598
  peg$currPos++;
1532
1599
  } else {
1533
1600
  s0 = peg$FAILED;
1534
- if (peg$silentFails === 0) peg$fail(peg$c65);
1601
+ if (peg$silentFails === 0) peg$fail(peg$c68);
1535
1602
  }
1536
1603
  return s0;
1537
1604
  }
1538
1605
  function peg$parseEscape() {
1539
1606
  let s0;
1540
1607
  if (input.charCodeAt(peg$currPos) === 92) {
1541
- s0 = peg$c17;
1608
+ s0 = peg$c18;
1542
1609
  peg$currPos++;
1543
1610
  } else {
1544
1611
  s0 = peg$FAILED;
1545
- if (peg$silentFails === 0) peg$fail(peg$c18);
1612
+ if (peg$silentFails === 0) peg$fail(peg$c19);
1546
1613
  }
1547
1614
  return s0;
1548
1615
  }
1549
1616
  function peg$parsePound() {
1550
1617
  let s0;
1551
1618
  if (input.charCodeAt(peg$currPos) === 35) {
1552
- s0 = peg$c3;
1619
+ s0 = peg$c4;
1553
1620
  peg$currPos++;
1554
1621
  } else {
1555
1622
  s0 = peg$FAILED;
1556
- if (peg$silentFails === 0) peg$fail(peg$c4);
1623
+ if (peg$silentFails === 0) peg$fail(peg$c5);
1557
1624
  }
1558
1625
  return s0;
1559
1626
  }
1560
1627
  function peg$parsePercent() {
1561
1628
  let s0;
1562
1629
  if (input.charCodeAt(peg$currPos) === 37) {
1563
- s0 = peg$c44;
1630
+ s0 = peg$c47;
1564
1631
  peg$currPos++;
1565
1632
  } else {
1566
1633
  s0 = peg$FAILED;
1567
- if (peg$silentFails === 0) peg$fail(peg$c45);
1634
+ if (peg$silentFails === 0) peg$fail(peg$c48);
1568
1635
  }
1569
1636
  return s0;
1570
1637
  }
@@ -1956,7 +2023,11 @@ const $918eb2016ac61e41$var$regexes = [
1956
2023
  $918eb2016ac61e41$var$numericKeyRegex,
1957
2024
  $918eb2016ac61e41$var$numeralKeyRegex
1958
2025
  ];
1959
- class $918eb2016ac61e41$var$Key {
2026
+ /**
2027
+ * Represents a key, such as Eb (symbol), #3 (numeric) or VII (numeral).
2028
+ *
2029
+ * The only function considered public API is `Key.distance`
2030
+ */ class $918eb2016ac61e41$var$Key {
1960
2031
  modifier = null;
1961
2032
  minor = false;
1962
2033
  static parse(keyString) {
@@ -1969,7 +2040,12 @@ class $918eb2016ac61e41$var$Key {
1969
2040
  static toString(keyStringOrObject) {
1970
2041
  return `${$918eb2016ac61e41$var$Key.wrap(keyStringOrObject)}`;
1971
2042
  }
1972
- static distance(oneKey, otherKey) {
2043
+ /**
2044
+ * Calculates the distance in semitones between one key and another.
2045
+ * @param {Key | string} oneKey the key
2046
+ * @param {Key | string} otherKey the other key
2047
+ * @return {number} the distance in semitones
2048
+ */ static distance(oneKey, otherKey) {
1973
2049
  return this.wrap(oneKey).distanceTo(otherKey);
1974
2050
  }
1975
2051
  distanceTo(otherKey) {
@@ -3280,7 +3356,7 @@ const $5e3a0c5a6197f95b$var$regexes = [
3280
3356
  else if (bassBase) this.bass = new (0, $918eb2016ac61e41$export$2e2bcd8739ae039)({
3281
3357
  note: bassBase,
3282
3358
  modifier: bassModifier,
3283
- minor: isMinor
3359
+ minor: false
3284
3360
  });
3285
3361
  else this.bass = null;
3286
3362
  }
@@ -3361,7 +3437,7 @@ var $5e3a0c5a6197f95b$export$2e2bcd8739ae039 = $5e3a0c5a6197f95b$var$Chord;
3361
3437
  });
3362
3438
  }
3363
3439
  transpose(delta, key = null, { normalizeChordSuffix: normalizeChordSuffix = false } = {}) {
3364
- const chordObj = (0, $5e3a0c5a6197f95b$export$2e2bcd8739ae039).parse(this.chords);
3440
+ const chordObj = (0, $5e3a0c5a6197f95b$export$2e2bcd8739ae039).parse(this.chords.trim());
3365
3441
  if (chordObj) {
3366
3442
  let transposedChord = chordObj.transpose(delta);
3367
3443
  if (key) transposedChord = transposedChord.normalize(key, {
@@ -3755,34 +3831,34 @@ var $55861b6d10167265$export$2e2bcd8739ae039 = $55861b6d10167265$var$Paragraph;
3755
3831
 
3756
3832
  class $328bfb8696ee6244$var$MetadataAccessors {
3757
3833
  get key() {
3758
- return this.getMetadata((0, $b3836272a1374d85$export$7167c830cefcb6b5));
3834
+ return this.getSingleMetadata((0, $b3836272a1374d85$export$7167c830cefcb6b5));
3759
3835
  }
3760
3836
  get title() {
3761
- return this.getMetadata((0, $b3836272a1374d85$export$f1e53f710478ceb4));
3837
+ return this.getSingleMetadata((0, $b3836272a1374d85$export$f1e53f710478ceb4));
3762
3838
  }
3763
3839
  get subtitle() {
3764
- return this.getMetadata((0, $b3836272a1374d85$export$5895c693c74b9cf4));
3840
+ return this.getSingleMetadata((0, $b3836272a1374d85$export$5895c693c74b9cf4));
3765
3841
  }
3766
3842
  get capo() {
3767
3843
  return this.getMetadata((0, $b3836272a1374d85$export$866f445d49bad88e));
3768
3844
  }
3769
3845
  get duration() {
3770
- return this.getMetadata((0, $b3836272a1374d85$export$bacc88974c736870));
3846
+ return this.getSingleMetadata((0, $b3836272a1374d85$export$bacc88974c736870));
3771
3847
  }
3772
3848
  get tempo() {
3773
- return this.getMetadata((0, $b3836272a1374d85$export$bd8d57d0bc5a8478));
3849
+ return this.getSingleMetadata((0, $b3836272a1374d85$export$bd8d57d0bc5a8478));
3774
3850
  }
3775
3851
  get time() {
3776
3852
  return this.getMetadata((0, $b3836272a1374d85$export$a9905336c0111a3a));
3777
3853
  }
3778
3854
  get year() {
3779
- return this.getMetadata((0, $b3836272a1374d85$export$90b88dc425a06a95));
3855
+ return this.getSingleMetadata((0, $b3836272a1374d85$export$90b88dc425a06a95));
3780
3856
  }
3781
3857
  get album() {
3782
3858
  return this.getMetadata((0, $b3836272a1374d85$export$10227cb086d1770c));
3783
3859
  }
3784
3860
  get copyright() {
3785
- return this.getMetadata((0, $b3836272a1374d85$export$4ab8c75045d12480));
3861
+ return this.getSingleMetadata((0, $b3836272a1374d85$export$4ab8c75045d12480));
3786
3862
  }
3787
3863
  get lyricist() {
3788
3864
  return this.getMetadata((0, $b3836272a1374d85$export$a6901bd008617c61));
@@ -3847,6 +3923,9 @@ function $fdb42fd3b59812d4$var$appendValue(array, key, value) {
3847
3923
  getMetadata(name) {
3848
3924
  return this.get(name);
3849
3925
  }
3926
+ getSingleMetadata(name) {
3927
+ return this.getSingle(name);
3928
+ }
3850
3929
  /**
3851
3930
  * Reads a metadata value by key. This method supports simple value lookup, as fetching single array values.
3852
3931
  *
@@ -4103,7 +4182,10 @@ var $8a1166616d2a7987$export$2e2bcd8739ae039 = $8a1166616d2a7987$var$ParserWarni
4103
4182
  return this.metadata;
4104
4183
  }
4105
4184
  getMetadata(name) {
4106
- return this.metadata[name] || null;
4185
+ return this.metadata.getMetadata(name);
4186
+ }
4187
+ getSingleMetadata(name) {
4188
+ return this.metadata.getSingleMetadata(name);
4107
4189
  }
4108
4190
  /**
4109
4191
  * Returns a copy of the song with the key value set to the specified key. It changes: