chordsheetjs 7.5.0 → 7.6.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/bundle.js +16 -12
- package/lib/index.js +16 -12
- package/lib/index.js.map +1 -1
- package/lib/main.d.ts +3 -2
- package/lib/main.d.ts.map +1 -1
- package/lib/module.js +5310 -0
- package/lib/module.js.map +1 -0
- package/package.json +7 -6
- package/lib/index.html +0 -40
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["src/index.ts","src/parser/chord_pro_parser.ts","src/parser/chord_pro_peg_parser.ts","src/chord_sheet_serializer.ts","src/chord_sheet/chord_pro/literal.ts","src/chord_sheet/song.ts","src/chord_sheet/line.ts","src/chord_sheet/chord_lyrics_pair.ts","src/chord.ts","src/key.ts","src/note.ts","src/constants.ts","src/normalize_mappings/enharmonic-normalize.ts","src/utilities.ts","src/normalize_mappings/suffix-normalize-mapping.ts","src/chord_sheet/tag.ts","src/chord_sheet/ast_component.ts","src/chord_sheet/comment.ts","src/chord_sheet/paragraph.ts","src/chord_sheet/metadata.ts","src/chord_sheet/metadata_accessors.ts","src/parser/parser_warning.ts","src/chord_sheet/chord_pro/ternary.ts","src/chord_sheet/chord_pro/evaluation_error.ts","src/chord_sheet/chord_pro/composite.ts","src/parser/chord_sheet_parser.ts","src/parser/ultimate_guitar_parser.ts","src/formatter/text_formatter.ts","src/formatter/formatter.ts","src/formatter/configuration/configuration.ts","src/formatter/configuration/metadata_configuration.ts","src/helpers.ts","src/key_config.json","src/template_helpers.ts","src/formatter/html_table_formatter.ts","src/formatter/html_formatter.ts","src/formatter/templates/html_table_formatter.ts","src/formatter/html_div_formatter.ts","src/formatter/templates/html_div_formatter.ts","src/formatter/chord_pro_formatter.ts"],"sourcesContent":["import ChordProParser from './parser/chord_pro_parser';\nimport ChordSheetParser from './parser/chord_sheet_parser';\nimport UltimateGuitarParser from './parser/ultimate_guitar_parser';\nimport TextFormatter from './formatter/text_formatter';\nimport HtmlTableFormatter from './formatter/html_table_formatter';\nimport HtmlDivFormatter from './formatter/html_div_formatter';\nimport ChordProFormatter from './formatter/chord_pro_formatter';\nimport ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Line from './chord_sheet/line';\nimport Song from './chord_sheet/song';\nimport Tag from './chord_sheet/tag';\nimport Comment from './chord_sheet/comment';\nimport Metadata from './chord_sheet/metadata';\nimport Paragraph from './chord_sheet/paragraph';\nimport Ternary from './chord_sheet/chord_pro/ternary';\nimport Composite from './chord_sheet/chord_pro/composite';\nimport Literal from './chord_sheet/chord_pro/literal';\nimport ChordSheetSerializer from './chord_sheet_serializer';\n\nimport {\n CHORUS,\n INDETERMINATE,\n VERSE,\n NONE,\n TAB,\n} from './constants';\n\nexport { default as ChordProParser } from './parser/chord_pro_parser';\nexport { default as ChordSheetParser } from './parser/chord_sheet_parser';\nexport { default as UltimateGuitarParser } from './parser/ultimate_guitar_parser';\nexport { default as TextFormatter } from './formatter/text_formatter';\nexport { default as HtmlTableFormatter } from './formatter/html_table_formatter';\nexport { default as HtmlDivFormatter } from './formatter/html_div_formatter';\nexport { default as ChordProFormatter } from './formatter/chord_pro_formatter';\nexport { default as ChordLyricsPair } from './chord_sheet/chord_lyrics_pair';\nexport { default as Line } from './chord_sheet/line';\nexport { default as Song } from './chord_sheet/song';\nexport { default as Tag } from './chord_sheet/tag';\nexport { default as Comment } from './chord_sheet/comment';\nexport { default as Metadata } from './chord_sheet/metadata';\nexport { default as Paragraph } from './chord_sheet/paragraph';\nexport { default as Ternary } from './chord_sheet/chord_pro/ternary';\nexport { default as Composite } from './chord_sheet/chord_pro/composite';\nexport { default as Literal } from './chord_sheet/chord_pro/literal';\nexport { default as ChordSheetSerializer } from './chord_sheet_serializer';\nexport { default as Chord, parseChord } from './chord';\nexport { default as Key } from './key';\n\nexport {\n CHORUS,\n INDETERMINATE,\n VERSE,\n NONE,\n TAB,\n SYMBOL,\n NUMERIC,\n} from './constants';\n\nexport default {\n ChordProParser,\n ChordSheetParser,\n UltimateGuitarParser,\n TextFormatter,\n HtmlTableFormatter,\n HtmlDivFormatter,\n ChordProFormatter,\n ChordLyricsPair,\n Line,\n Song,\n Tag,\n Comment,\n Metadata,\n Paragraph,\n Ternary,\n Composite,\n Literal,\n ChordSheetSerializer,\n CHORUS,\n INDETERMINATE,\n TAB,\n VERSE,\n NONE,\n};\n","import { Song } from '../index';\nimport { parse } from './chord_pro_peg_parser';\nimport ChordSheetSerializer from '../chord_sheet_serializer';\nimport ParserWarning from './parser_warning';\n\n/**\n * Parses a ChordPro chord sheet\n */\nclass ChordProParser {\n song?: Song;\n\n /**\n * Parses a ChordPro chord sheet into a song\n * @param {string} chordProChordSheet the ChordPro chord sheet\n * @returns {Song} The parsed song\n */\n parse(chordProChordSheet) {\n const ast = parse(chordProChordSheet);\n this.song = new ChordSheetSerializer().deserialize(ast);\n return this.song;\n }\n\n /**\n * All warnings raised during parsing the ChordPro chord sheet\n * @member\n * @type {ParserWarning[]}\n */\n get warnings(): ParserWarning[] {\n return this.song.warnings;\n }\n}\n\nexport default ChordProParser;\n","\n// Generated by peggy v. 1.2.0 (ts-pegjs plugin v. 1.2.2 )\n//\n// https://peggyjs.org/ https://github.com/metadevpro/ts-pegjs\n\n\"use strict\";\n\nexport interface IFilePosition {\n offset: number;\n line: number;\n column: number;\n}\n\nexport interface IFileRange {\n start: IFilePosition;\n end: IFilePosition;\n source: string;\n}\n\nexport interface ILiteralExpectation {\n type: \"literal\";\n text: string;\n ignoreCase: boolean;\n}\n\nexport interface IClassParts extends Array<string | IClassParts> {}\n\nexport interface IClassExpectation {\n type: \"class\";\n parts: IClassParts;\n inverted: boolean;\n ignoreCase: boolean;\n}\n\nexport interface IAnyExpectation {\n type: \"any\";\n}\n\nexport interface IEndExpectation {\n type: \"end\";\n}\n\nexport interface IOtherExpectation {\n type: \"other\";\n description: string;\n}\n\nexport type Expectation = ILiteralExpectation | IClassExpectation | IAnyExpectation | IEndExpectation | IOtherExpectation;\n\nfunction peg$padEnd(str: string, targetLength: number, padString: string) {\n padString = padString || ' ';\n if (str.length > targetLength) {\n return str;\n }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\nexport class SyntaxError extends Error {\n public static buildMessage(expected: Expectation[], found: string | null) {\n function hex(ch: string): string {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s: string): string {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch) )\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch) );\n }\n\n function classEscape(s: string): string {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch) )\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch) );\n }\n\n function describeExpectation(expectation: Expectation) {\n switch (expectation.type) {\n case \"literal\":\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n case \"class\":\n const escapedParts = expectation.parts.map((part) => {\n return Array.isArray(part)\n ? classEscape(part[0] as string) + \"-\" + classEscape(part[1] as string)\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n case \"any\":\n return \"any character\";\n case \"end\":\n return \"end of input\";\n case \"other\":\n return expectation.description;\n }\n }\n\n function describeExpected(expected1: Expectation[]) {\n const descriptions = expected1.map(describeExpectation);\n let i: number;\n let j: number;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found1: string | null) {\n return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n }\n\n public message: string;\n public expected: Expectation[];\n public found: string | null;\n public location: IFileRange;\n public name: string;\n\n constructor(message: string, expected: Expectation[], found: string | null, location: IFileRange) {\n super();\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof (Object as any).setPrototypeOf === \"function\") {\n (Object as any).setPrototypeOf(this, SyntaxError.prototype);\n } else {\n (this as any).__proto__ = SyntaxError.prototype;\n }\n if (typeof (Error as any).captureStackTrace === \"function\") {\n (Error as any).captureStackTrace(this, SyntaxError);\n }\n }\n\n format(sources: { source: string; text: string }[]): string {\n let str = 'Error: ' + this.message;\n if (this.location) {\n let src: string[] | null = null;\n let k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n let s = this.location.start;\n let loc = this.location.source + ':' + s.line + ':' + s.column;\n if (src) {\n let e = this.location.end;\n let filler = peg$padEnd('', s.line.toString().length, ' ');\n let line = src[s.line - 1];\n let last = s.line === e.line ? e.column : line.length + 1;\n str += '\\n --> ' + loc + '\\n' + filler + ' |\\n' + s.line + ' | ' + line + '\\n' + filler + ' | ' +\n peg$padEnd('', s.column - 1, ' ') +\n peg$padEnd('', last - s.column, '^');\n } else {\n str += '\\n at ' + loc;\n }\n }\n return str;\n }\n}\n\nfunction peg$parse(input: string, options?: IParseOptions) {\n options = options !== undefined ? options : {};\n\n const peg$FAILED: Readonly<any> = {};\n const peg$source = options.grammarSource;\n\n const peg$startRuleFunctions: {[id: string]: any} = { ChordSheet: peg$parseChordSheet };\n let peg$startRuleFunction: () => any = peg$parseChordSheet;\n\n const peg$c0 = function(lines: any, line: any): any {\n return {\n type: \"chordSheet\",\n lines: [...lines, line]\n }\n };\n const peg$c1 = function(line: any): any {\n return line\n };\n const peg$c2 = function(lyrics: any, tokens: any, chords: any, comment: any): any {\n return {\n type: \"line\",\n items: [\n lyrics ? {type: \"chordLyricsPair\", chords: '', lyrics} : null,\n ...tokens,\n chords ? {type: \"chordLyricsPair\", chords, lyrics: ''} : null,\n comment ? {type: \"comment\", comment} : null\n ].filter(x => x)\n }\n };\n const peg$c3 = \"#\";\n const peg$c4 = peg$literalExpectation(\"#\", false);\n const peg$c5 = /^[^\\r\\n]/;\n const peg$c6 = peg$classExpectation([\"\\r\", \"\\n\"], true, false);\n const peg$c7 = function(comment: any): any {\n return comment;\n };\n const peg$c8 = function(chords: any, lyrics: any): any {\n return { type: \"chordLyricsPair\", chords: chords || '', lyrics }\n };\n const peg$c9 = function(lyrics: any): any {\n return lyrics.map(c => c.char || c).join(\"\");\n };\n const peg$c10 = \"[\";\n const peg$c11 = peg$literalExpectation(\"[\", false);\n const peg$c12 = \"]\";\n const peg$c13 = peg$literalExpectation(\"]\", false);\n const peg$c14 = function(chords: any): any {\n return chords.map(c => c.char || c).join(\"\");\n };\n const peg$c15 = /^[^\\]\\r\\n]/;\n const peg$c16 = peg$classExpectation([\"]\", \"\\r\", \"\\n\"], true, false);\n const peg$c17 = \"\\\\\";\n const peg$c18 = peg$literalExpectation(\"\\\\\", false);\n const peg$c19 = function(): any { return {type: \"char\", char: \"\\\\\"}; };\n const peg$c20 = function(): any { return {type: \"char\", char: \"]\"}; };\n const peg$c21 = function(sequence: any): any { return sequence; };\n const peg$c22 = \"%{\";\n const peg$c23 = peg$literalExpectation(\"%{\", false);\n const peg$c24 = \"}\";\n const peg$c25 = peg$literalExpectation(\"}\", false);\n const peg$c26 = function(variableName: any, valueTest: any, expressions: any): any {\n return {\n \"type\": \"ternary\",\n variable: variableName.length > 0 ? variableName : null,\n valueTest,\n ...expressions,\n location: location().start\n };\n };\n const peg$c27 = \"=\";\n const peg$c28 = peg$literalExpectation(\"=\", false);\n const peg$c29 = function(testValue: any): any {\n return testValue;\n };\n const peg$c30 = \"|\";\n const peg$c31 = peg$literalExpectation(\"|\", false);\n const peg$c32 = function(trueExpression: any, falseExpression: any): any {\n return {\n \"type\": \"ternary\",\n trueExpression,\n falseExpression,\n location: location().start\n }\n };\n const peg$c33 = function(falseExpression: any): any {\n return falseExpression;\n };\n const peg$c34 = /^[a-zA-Z0-9\\-_]/;\n const peg$c35 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"-\", \"_\"], false, false);\n const peg$c36 = function(): any { return {type: \"char\", char: \"|\"}; };\n const peg$c37 = function(): any { return {type: \"char\", char: \"\\x7d\"}; };\n const peg$c38 = /^[^|[\\]\\\\{}%#\\r\\n]/;\n const peg$c39 = peg$classExpectation([\"|\", \"[\", \"]\", \"\\\\\", \"{\", \"}\", \"%\", \"#\", \"\\r\", \"\\n\"], true, false);\n const peg$c40 = function(): any { return {type: \"char\", char: \"[\"}; };\n const peg$c41 = \"{\";\n const peg$c42 = peg$literalExpectation(\"{\", false);\n const peg$c43 = function(): any { return {type: \"char\", char: \"\\x7b\"}; };\n const peg$c44 = \"%\";\n const peg$c45 = peg$literalExpectation(\"%\", false);\n const peg$c46 = function(): any { return {type: \"char\", char: \"%\"}; };\n const peg$c47 = function(): any { return {type: \"char\", char: \"#\"}; };\n const peg$c48 = function(tagName: any, tagColonWithValue: any): any {\n return {\n type: \"tag\",\n name: tagName,\n value: tagColonWithValue,\n location: location().start\n }\n };\n const peg$c49 = \":\";\n const peg$c50 = peg$literalExpectation(\":\", false);\n const peg$c51 = function(tagValue: any): any {\n return tagValue.map(c => c.char || c).join('');\n };\n const peg$c52 = /^[a-zA-Z\\-_]/;\n const peg$c53 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"-\", \"_\"], false, false);\n const peg$c54 = /^[^}\\\\\\r\\n]/;\n const peg$c55 = peg$classExpectation([\"}\", \"\\\\\", \"\\r\", \"\\n\"], true, false);\n const peg$c56 = peg$otherExpectation(\"whitespace\");\n const peg$c57 = /^[ \\t\\n\\r]/;\n const peg$c58 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false);\n const peg$c59 = peg$otherExpectation(\"space\");\n const peg$c60 = /^[ \\t]/;\n const peg$c61 = peg$classExpectation([\" \", \"\\t\"], false, false);\n const peg$c62 = \"\\n\";\n const peg$c63 = peg$literalExpectation(\"\\n\", false);\n const peg$c64 = \"\\r\";\n const peg$c65 = peg$literalExpectation(\"\\r\", false);\n\n let peg$currPos = 0;\n let peg$savedPos = 0;\n const peg$posDetailsCache = [{ line: 1, column: 1 }];\n let peg$maxFailPos = 0;\n let peg$maxFailExpected: Expectation[] = [];\n let peg$silentFails = 0;\n\n let peg$result;\n\n if (options.startRule !== undefined) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text(): string {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location(): IFileRange {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description: string, location1?: IFileRange) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location1\n );\n }\n\n function error(message: string, location1?: IFileRange) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location1);\n }\n\n function peg$literalExpectation(text1: string, ignoreCase: boolean): ILiteralExpectation {\n return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts: IClassParts, inverted: boolean, ignoreCase: boolean): IClassExpectation {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation(): IAnyExpectation {\n return { type: \"any\" };\n }\n\n function peg$endExpectation(): IEndExpectation {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description: string): IOtherExpectation {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos: number) {\n let details = peg$posDetailsCache[pos];\n let p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos: number, endPos: number): IFileRange {\n const startPosDetails = peg$computePosDetails(startPos);\n const endPosDetails = peg$computePosDetails(endPos);\n\n return {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected1: Expectation) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected1);\n }\n\n function peg$buildSimpleError(message: string, location1: IFileRange) {\n return new SyntaxError(message, [], \"\", location1);\n }\n\n function peg$buildStructuredError(expected1: Expectation[], found: string | null, location1: IFileRange) {\n return new SyntaxError(\n SyntaxError.buildMessage(expected1, found),\n expected1,\n found,\n location1\n );\n }\n\n function peg$parseChordSheet(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseLineWithNewline();\n while (s2 as any !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseLineWithNewline();\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parseLine();\n if (s2 as any === peg$FAILED) {\n s2 = null;\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLineWithNewline(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseLine();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parseNewLine();\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLine(): any {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseLyrics();\n if (s1 as any === peg$FAILED) {\n s1 = null;\n }\n if (s1 as any !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseToken();\n while (s3 as any !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseToken();\n }\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseChord();\n if (s3 as any === peg$FAILED) {\n s3 = null;\n }\n if (s3 as any !== peg$FAILED) {\n s4 = peg$parseComment();\n if (s4 as any === peg$FAILED) {\n s4 = null;\n }\n if (s4 as any !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseSpace();\n while (s6 as any !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseSpace();\n }\n if (s5 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1, s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseToken(): any {\n let s0;\n\n s0 = peg$parseTag();\n if (s0 as any === peg$FAILED) {\n s0 = peg$parseChordLyricsPair();\n if (s0 as any === peg$FAILED) {\n s0 = peg$parseMetaTernary();\n }\n }\n\n return s0;\n }\n\n function peg$parseComment(): any {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseSpace();\n if (s1 as any === peg$FAILED) {\n s1 = null;\n }\n if (s1 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 35) {\n s2 = peg$c3;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s2 as any !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n while (s5 as any !== peg$FAILED) {\n s4.push(s5);\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n }\n if (s4 as any !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c7(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseChordLyricsPair(): any {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseChord();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n s4 = peg$parseLyrics();\n while (s4 as any !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseLyrics();\n }\n if (s3 as any !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c8(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLyrics(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseLyricsChar();\n if (s2 as any !== peg$FAILED) {\n while (s2 as any !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseLyricsChar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c9(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseChord(): any {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseEscape();\n peg$silentFails--;\n if (s2 as any === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s2 = peg$c10;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s2 as any !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseChordChar();\n while (s4 as any !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseChordChar();\n }\n if (s3 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s4 = peg$c12;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s4 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c14(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseChordChar(): any {\n let s0, s1, s2, s3;\n\n if (peg$c15.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseEscape();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s3 = peg$c17;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c19();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c12;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c20();\n }\n s2 = s3;\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseMetaTernary(): any {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = peg$parseMetaVariableName();\n if (s4 as any === peg$FAILED) {\n s4 = null;\n }\n if (s4 as any !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 as any !== peg$FAILED) {\n s4 = peg$parseMetaValueTest();\n if (s4 as any === peg$FAILED) {\n s4 = null;\n }\n if (s4 as any !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 as any !== peg$FAILED) {\n s6 = peg$parseMetaTernaryTrueFalseExpressions();\n if (s6 as any === peg$FAILED) {\n s6 = null;\n }\n if (s6 as any !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c24;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s8 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s3, s4, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaValueTest(): any {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c27;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseMetaTestValue();\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c29(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaTestValue(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseChar();\n if (s2 as any !== peg$FAILED) {\n while (s2 as any !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseChar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 as any !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseMetaTernaryTrueFalseExpressions(): any {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseMetaExpression();\n if (s3 as any !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 as any !== peg$FAILED) {\n s5 = peg$parseMetaTernaryFalseExpression();\n if (s5 as any === peg$FAILED) {\n s5 = null;\n }\n if (s5 as any !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c32(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaTernaryFalseExpression(): any {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseMetaExpression();\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c33(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaVariableName(): any {\n let s0, s1;\n\n s0 = [];\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s1 as any !== peg$FAILED) {\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaExpression(): any {\n let s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parseChar();\n if (s3 as any !== peg$FAILED) {\n while (s3 as any !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseChar();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 as any !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 as any === peg$FAILED) {\n s1 = peg$parseMetaTernary();\n }\n if (s1 as any !== peg$FAILED) {\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parseChar();\n if (s3 as any !== peg$FAILED) {\n while (s3 as any !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseChar();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 as any !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 as any === peg$FAILED) {\n s1 = peg$parseMetaTernary();\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLyricsChar(): any {\n let s0, s1;\n\n s0 = peg$parseChar();\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 93) {\n s1 = peg$c12;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20();\n }\n s0 = s1;\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c36();\n }\n s0 = s1;\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 125) {\n s1 = peg$c24;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s1 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c37();\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseChar(): any {\n let s0, s1, s2, s3;\n\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseEscape();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s3 = peg$c17;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c19();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s3 = peg$c30;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c36();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c40();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c12;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c20();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s3 = peg$c41;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c43();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c24;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c37();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 37) {\n s3 = peg$c44;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c46();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s3 = peg$c3;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c47();\n }\n s2 = s3;\n }\n }\n }\n }\n }\n }\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseTag(): any {\n let s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c41;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = peg$parseTagName();\n if (s4 as any !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 as any !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 as any !== peg$FAILED) {\n s5 = peg$parseTagColonWithValue();\n if (s5 as any === peg$FAILED) {\n s5 = null;\n }\n if (s5 as any !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c24;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s7 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c48(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagColonWithValue(): any {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c49;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseTagValue();\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c51(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagName(): any {\n let s0, s1;\n\n s0 = [];\n if (peg$c52.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c53); }\n }\n if (s1 as any !== peg$FAILED) {\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n if (peg$c52.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c53); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagValue(): any {\n let s0, s1;\n\n s0 = [];\n s1 = peg$parseTagValueChar();\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseTagValueChar();\n }\n\n return s0;\n }\n\n function peg$parseTagValueChar(): any {\n let s0, s1, s2, s3;\n\n if (peg$c54.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseEscape();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s3 = peg$c17;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c19();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c24;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c37();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s3 = peg$c41;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c43();\n }\n s2 = s3;\n }\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parse_(): any {\n let s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c57.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n if (peg$c57.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n }\n peg$silentFails--;\n if (s0 as any === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c56); }\n }\n\n return s0;\n }\n\n function peg$parseSpace(): any {\n let s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c60.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s1 as any !== peg$FAILED) {\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n if (peg$c60.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 as any === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c59); }\n }\n\n return s0;\n }\n\n function peg$parseNewLine(): any {\n let s0;\n\n s0 = peg$parseCarriageReturn();\n if (s0 as any === peg$FAILED) {\n s0 = peg$parseLineFeed();\n if (s0 as any === peg$FAILED) {\n s0 = peg$parseCarriageReturnLineFeed();\n }\n }\n\n return s0;\n }\n\n function peg$parseCarriageReturnLineFeed(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseCarriageReturn();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parseLineFeed();\n if (s2 as any !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLineFeed(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 10) {\n s0 = peg$c62;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n\n return s0;\n }\n\n function peg$parseCarriageReturn(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 13) {\n s0 = peg$c64;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n\n return s0;\n }\n\n function peg$parseEscape(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 92) {\n s0 = peg$c17;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n\n return s0;\n }\n\n function peg$parsePound(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 35) {\n s0 = peg$c3;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n\n return s0;\n }\n\n function peg$parsePercent(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 37) {\n s0 = peg$c44;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nexport interface IParseOptions {\n filename?: string;\n startRule?: string;\n tracer?: any;\n [key: string]: any;\n}\nexport type ParseFunction = (input: string, options?: IParseOptions) => any;\nexport const parse: ParseFunction = peg$parse;\n\n","import Literal from './chord_sheet/chord_pro/literal';\nimport Song from './chord_sheet/song';\nimport ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Tag from './chord_sheet/tag';\nimport Comment from './chord_sheet/comment';\nimport Ternary from './chord_sheet/chord_pro/ternary';\nimport { presence } from './utilities';\n\nconst CHORD_SHEET = 'chordSheet';\nconst CHORD_LYRICS_PAIR = 'chordLyricsPair';\nconst TAG = 'tag';\nconst COMMENT = 'comment';\nconst TERNARY = 'ternary';\nconst LINE = 'line';\n\n/**\n * Serializes a song into een plain object, and deserializes the serialized object back into a {@link Song}\n */\nclass ChordSheetSerializer {\n song?: Song;\n\n /**\n * Serializes the chord sheet to a plain object, which can be converted to any format like JSON, XML etc\n * Can be deserialized using {@link deserialize}\n * @returns object A plain JS object containing all chord sheet data\n */\n serialize(song) {\n return {\n type: CHORD_SHEET,\n lines: song.lines.map((line) => this.serializeLine(line)),\n };\n }\n\n serializeLine(line) {\n return {\n type: LINE,\n items: line.items.map((item) => this.serializeItem(item)),\n };\n }\n\n serializeItem(item) {\n if (item instanceof Tag) {\n return this.serializeTag(item);\n }\n\n if (item instanceof ChordLyricsPair) {\n return this.serializeChordLyricsPair(item);\n }\n\n if (item instanceof Ternary) {\n return this.serializeTernary(item);\n }\n\n if (item instanceof Literal) {\n return this.serializeLiteral(item);\n }\n\n throw new Error(`Don't know how to serialize ${item.constructor.name}`);\n }\n\n serializeTag(tag) {\n return {\n type: TAG,\n name: tag.originalName,\n value: tag.value,\n };\n }\n\n serializeChordLyricsPair(chordLyricsPair) {\n return {\n type: CHORD_LYRICS_PAIR,\n chords: chordLyricsPair.chords,\n lyrics: chordLyricsPair.lyrics,\n };\n }\n\n serializeTernary(ternary) {\n return {\n type: TERNARY,\n variable: ternary.variable,\n valueTest: ternary.valueTest,\n trueExpression: this.serializeExpression(ternary.trueExpression),\n falseExpression: this.serializeExpression(ternary.falseExpression),\n };\n }\n\n serializeLiteral(literal) {\n return literal.string;\n }\n\n serializeExpression(expression) {\n return expression?.map((part) => this.serializeItem(part));\n }\n\n /**\n * Deserializes a song that has been serialized using {@link serialize}\n * @param {object} serializedSong The serialized song\n * @returns {Song} The deserialized song\n */\n deserialize(serializedSong) {\n this.parseAstComponent(serializedSong);\n return this.song;\n }\n\n parseAstComponent(astComponent) {\n if (!astComponent) {\n return null;\n }\n\n if (typeof astComponent === 'string') {\n return new Literal(astComponent);\n }\n\n const { type } = astComponent;\n\n switch (type) {\n case CHORD_SHEET:\n return this.parseChordSheet(astComponent);\n case CHORD_LYRICS_PAIR:\n return this.parseChordLyricsPair(astComponent);\n case TAG:\n return this.parseTag(astComponent);\n case COMMENT:\n return this.parseComment(astComponent);\n case TERNARY:\n return this.parseTernary(astComponent);\n default:\n console.warn(`Unhandled AST component \"${type}\"`, astComponent);\n }\n\n return null;\n }\n\n parseChordSheet(astComponent) {\n const { lines } = astComponent;\n this.song = new Song();\n lines.forEach((line) => this.parseLine(line));\n }\n\n parseLine(astComponent) {\n const { items } = astComponent;\n this.song.addLine();\n\n items.forEach((item) => {\n const parsedItem = this.parseAstComponent(item);\n this.song.addItem(parsedItem);\n });\n }\n\n parseChordLyricsPair(astComponent) {\n const { chords, lyrics } = astComponent;\n return new ChordLyricsPair(chords, lyrics);\n }\n\n parseTag(astComponent) {\n const {\n name,\n value,\n location: { offset = null, line = null, column = null } = {},\n } = astComponent;\n return new Tag(name, value, { line, column, offset });\n }\n\n parseComment(astComponent) {\n const { comment } = astComponent;\n return new Comment(comment);\n }\n\n parseTernary(astComponent) {\n const {\n variable,\n valueTest,\n trueExpression,\n falseExpression,\n location: { offset = null, line = null, column = null } = {},\n } = astComponent;\n\n return new Ternary({\n variable,\n valueTest,\n trueExpression: this.parseExpression(trueExpression),\n falseExpression: this.parseExpression(falseExpression),\n offset,\n line,\n column,\n });\n }\n\n parseExpression(expression) {\n const parsedParts = (expression || []).map((part) => this.parseAstComponent(part));\n return presence(parsedParts);\n }\n}\n\nexport default ChordSheetSerializer;\n","class Literal {\n string: string;\n\n constructor(expression) {\n this.string = expression;\n }\n\n evaluate() {\n return this.string;\n }\n\n isRenderable() {\n return true;\n }\n\n clone() {\n return new Literal(this.string);\n }\n}\n\nexport default Literal;\n","import Line from './line';\nimport Paragraph from './paragraph';\nimport Key from '../key';\nimport ChordLyricsPair from './chord_lyrics_pair';\nimport { deprecate, pushNew } from '../utilities';\nimport Metadata from './metadata';\nimport ParserWarning from '../parser/parser_warning';\nimport MetadataAccessors from './metadata_accessors';\nimport Item from './item';\n\nimport {\n CHORUS, NONE, TAB, VERSE,\n} from '../constants';\n\nimport Tag, {\n END_OF_CHORUS,\n END_OF_TAB,\n END_OF_VERSE,\n START_OF_CHORUS,\n START_OF_TAB,\n START_OF_VERSE,\n TRANSPOSE,\n NEW_KEY,\n CAPO,\n KEY,\n} from './tag';\n\ninterface MapItemsCallback {\n (_item: Item): Item | null;\n}\n\ninterface MapLinesCallback {\n (_line: Line): Line | null;\n}\n\n/**\n * Represents a song in a chord sheet. Currently a chord sheet can only have one song.\n */\nclass Song extends MetadataAccessors {\n /**\n * The {@link Line} items of which the song consists\n * @member {Line[]}\n */\n lines: Line[] = [];\n\n /**\n * The song's metadata. When there is only one value for an entry, the value is a string. Else, the value is\n * an array containing all unique values for the entry.\n * @type {Metadata}\n */\n metadata: Metadata;\n\n currentLine?: Line = null;\n\n warnings: ParserWarning[] = [];\n\n sectionType: string = NONE;\n\n currentKey?: string = null;\n\n transposeKey?: string = null;\n\n /**\n * Creates a new {Song} instance\n * @param metadata {Object|Metadata} predefined metadata\n */\n constructor(metadata = {}) {\n super();\n this.metadata = new Metadata(metadata);\n }\n\n get previousLine() {\n const count = this.lines.length;\n\n if (count >= 2) {\n return this.lines[count - 2];\n }\n\n return null;\n }\n\n /**\n * Returns the song lines, skipping the leading empty lines (empty as in not rendering any content). This is useful\n * if you want to skip the \"header lines\": the lines that only contain meta data.\n * @returns {Line[]} The song body lines\n */\n get bodyLines() {\n return this.selectRenderableItems('_bodyLines', 'lines');\n }\n\n /**\n * Returns the song paragraphs, skipping the paragraphs that only contain empty lines\n * (empty as in not rendering any content)\n * @see {@link bodyLines}\n * @returns {Paragraph[]}\n */\n get bodyParagraphs() {\n return this.selectRenderableItems('_bodyParagraphs', 'paragraphs');\n }\n\n selectRenderableItems(targetProp, sourceProp) {\n if (this[targetProp] === undefined) {\n this[targetProp] = [...this[sourceProp]];\n const collection = this[targetProp];\n\n while (collection.length > 0 && !collection[0].hasRenderableItems()) {\n this[targetProp].shift();\n }\n }\n\n return this[targetProp];\n }\n\n chords(chr) {\n this.currentLine.chords(chr);\n }\n\n lyrics(chr) {\n this.ensureLine();\n this.currentLine.lyrics(chr);\n }\n\n addLine(line?: Line) {\n this.currentLine = line || pushNew(this.lines, Line);\n this.setCurrentLineType(this.sectionType);\n this.currentLine.transposeKey = this.transposeKey ?? this.currentKey;\n this.currentLine.key = this.currentKey || this.metadata.getSingle(KEY);\n return this.currentLine;\n }\n\n /**\n * The {@link Paragraph} items of which the song consists\n * @member {Paragraph[]}\n */\n get paragraphs() {\n let currentParagraph = new Paragraph();\n const paragraphs = [currentParagraph];\n\n this.lines.forEach((line) => {\n if (line.isEmpty()) {\n currentParagraph = new Paragraph();\n paragraphs.push(currentParagraph);\n } else if (line.hasRenderableItems()) {\n currentParagraph.addLine(line);\n }\n });\n\n return paragraphs;\n }\n\n setCurrentLineType(sectionType) {\n this.currentLine.type = sectionType;\n }\n\n ensureLine() {\n if (this.currentLine === null) {\n this.addLine();\n }\n }\n\n addTag(tagContents: string | Tag) {\n const tag = Tag.parse(tagContents);\n\n if (tag.isMetaTag()) {\n this.setMetadata(tag.name, tag.value);\n } else if (tag.name === TRANSPOSE) {\n this.transposeKey = tag.value;\n } else if (tag.name === NEW_KEY) {\n this.currentKey = tag.value;\n } else {\n this.setSectionTypeFromTag(tag);\n }\n\n this.ensureLine();\n this.currentLine.addTag(tag);\n\n return tag;\n }\n\n setSectionTypeFromTag(tag) {\n switch (tag.name) {\n case START_OF_CHORUS:\n this.startSection(CHORUS, tag);\n break;\n\n case END_OF_CHORUS:\n this.endSection(CHORUS, tag);\n break;\n\n case START_OF_TAB:\n this.startSection(TAB, tag);\n break;\n\n case END_OF_TAB:\n this.endSection(TAB, tag);\n break;\n\n case START_OF_VERSE:\n this.startSection(VERSE, tag);\n break;\n\n case END_OF_VERSE:\n this.endSection(VERSE, tag);\n break;\n\n default:\n break;\n }\n }\n\n startSection(sectionType, tag) {\n this.checkCurrentSectionType(NONE, tag);\n this.sectionType = sectionType;\n this.setCurrentLineType(sectionType);\n }\n\n endSection(sectionType, tag) {\n this.checkCurrentSectionType(sectionType, tag);\n this.sectionType = NONE;\n }\n\n checkCurrentSectionType(sectionType, tag) {\n if (this.sectionType !== sectionType) {\n this.addWarning(`Unexpected tag {${tag.originalName}, current section is: ${this.sectionType}`, tag);\n }\n }\n\n addWarning(message, { line, column }) {\n const warning = new ParserWarning(message, line, column);\n this.warnings.push(warning);\n }\n\n addItem(item) {\n if (item instanceof Tag) {\n this.addTag(item);\n } else {\n this.ensureLine();\n this.currentLine.addItem(item);\n }\n }\n\n /**\n * Returns a deep clone of the song\n * @returns {Song} The cloned song\n */\n clone() {\n return this.mapItems((item) => item);\n }\n\n setMetadata(name, value) {\n this.metadata.add(name, value);\n }\n\n /**\n * The song's metadata. Please use {@link metadata} instead.\n * @deprecated\n * @returns {@link Metadata} The metadata\n */\n get metaData() {\n deprecate('metaData has been deprecated, please use metadata instead (notice the lowercase \"d\")');\n return this.metadata;\n }\n\n getMetadata(name) {\n return this.metadata[name] || null;\n }\n\n /**\n * Returns a copy of the song with the key value set to the specified key. It changes:\n * - the value for `key` in the {@link metadata} set\n * - any existing `key` directive\n * @param {number|null} key the key. Passing `null` will:\n * - remove the current key from {@link metadata}\n * - remove any `key` directive\n * @returns {Song} The changed song\n */\n setKey(key): Song {\n return this.changeMetadata(KEY, key ? key.toString() : key);\n }\n\n /**\n * Returns a copy of the song with the key value set to the specified capo. It changes:\n * - the value for `capo` in the {@link metadata} set\n * - any existing `capo` directive\n * @param {number|null} capo the capo. Passing `null` will:\n * - remove the current key from {@link metadata}\n * - remove any `capo` directive\n * @returns {Song} The changed song\n */\n setCapo(capo) {\n return this.changeMetadata(CAPO, capo);\n }\n\n private setDirective(name: string, value: string | null) {\n if (value === null) {\n return this.removeItem((item) => item instanceof Tag && item.name === name);\n }\n\n return this.updateItem(\n (item) => item instanceof Tag && item.name === name,\n (item) => item.set({ value }),\n (song) => song.insertDirective(name, value),\n );\n }\n\n /**\n * Transposes the song by the specified delta. It will:\n * - transpose all chords, see: {@link Chord#transpose}\n * - transpose the song key in {@link metadata}\n * - update any existing `key` directive\n * @param {number} delta The number of semitones (positive or negative) to transpose with\n * @param {Object} [options={}] options\n * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n * @returns {Song} The transposed song\n */\n transpose(delta: number, { normalizeChordSuffix = false } = {}): Song {\n const wrappedKey = Key.wrap(this.key);\n let transposedKey = null;\n let song = (this as Song);\n\n if (wrappedKey) {\n transposedKey = wrappedKey.transpose(delta);\n song = song.setKey(transposedKey);\n }\n\n return song.mapItems((item) => {\n if (item instanceof ChordLyricsPair) {\n return (item as ChordLyricsPair).transpose(delta, transposedKey, { normalizeChordSuffix });\n }\n\n return item;\n });\n }\n\n /**\n * Transposes the song up by one semitone. It will:\n * - transpose all chords, see: {@link Chord#transpose}\n * - transpose the song key in {@link metadata}\n * - update any existing `key` directive\n * @param {Object} [options={}] options\n * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n * @returns {Song} The transposed song\n */\n transposeUp({ normalizeChordSuffix = false } = {}): Song {\n return this.transpose(1, { normalizeChordSuffix });\n }\n\n /**\n * Transposes the song down by one semitone. It will:\n * - transpose all chords, see: {@link Chord#transpose}\n * - transpose the song key in {@link metadata}\n * - update any existing `key` directive\n * @param {Object} [options={}] options\n * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n * @returns {Song} The transposed song\n */\n transposeDown({ normalizeChordSuffix = false } = {}): Song {\n return this.transpose(-1, { normalizeChordSuffix });\n }\n\n /**\n * Returns a copy of the song with the key set to the specified key. It changes:\n * - the value for `key` in the {@link metadata} set\n * - any existing `key` directive\n * - all chords, those are transposed according to the distance between the current and the new key\n * @param {string} newKey The new key.\n * @returns {Song} The changed song\n */\n changeKey(newKey: string | Key) {\n const transpose = this.getTransposeDistance(newKey);\n\n const updatedSong = this.mapItems((item) => {\n if (item instanceof Tag && item.name === KEY) {\n return item.set({ value: newKey });\n }\n\n if (item instanceof ChordLyricsPair) {\n return item.transpose(transpose, newKey);\n }\n\n return item;\n });\n\n this.setKey(newKey);\n return updatedSong;\n }\n\n getTransposeDistance(newKey: string | Key) {\n const wrappedKey = Key.wrap(this.key);\n\n if (!wrappedKey) {\n throw new Error(`\nCannot change song key, the original key is unknown.\n\nEither ensure a key directive is present in the song (when using chordpro):\n \\`{key: C}\\`\n\nOr set the song key before changing key:\n \\`song.setKey('C');\\``.substring(1));\n }\n\n return wrappedKey.distanceTo(newKey);\n }\n\n /**\n * Returns a copy of the song with the directive value set to the specified value.\n * - when there is a matching directive in the song, it will update the directive\n * - when there is no matching directive, it will be inserted\n * If `value` is `null` it will act as a delete, any directive matching `name` will be removed.\n * @param {string} name The directive name\n * @param {string | null} value The value to set, or `null` to remove the directive\n */\n changeMetadata(name: string, value: string | null) {\n const updatedSong = this.setDirective(name, value);\n updatedSong.metadata.set(name, value);\n return updatedSong;\n }\n\n private insertDirective(name, value, { after = null } = {}) {\n const insertIndex = this.lines.findIndex((line) => (\n line.items.some((item) => (\n !(item instanceof Tag) || (after && item instanceof Tag && item.name === after)\n ))\n ));\n\n const newLine = new Line();\n newLine.addTag(name, value);\n\n const clonedSong = this.clone();\n const { lines } = clonedSong;\n clonedSong.lines = [...lines.slice(0, insertIndex), newLine, ...lines.slice(insertIndex)];\n\n return clonedSong;\n }\n\n /**\n * Change the song contents inline. Return a new {@link Item} to replace it. Return `null` to remove it.\n * @example\n * // transpose all chords:\n * song.mapItems((item) => {\n * if (item instanceof ChordLyricsPair) {\n * return item.transpose(2, 'D');\n * }\n *\n * return item;\n * });\n * @param {MapItemsCallback} func the callback function\n * @returns {Song} the changed song\n */\n mapItems(func: MapItemsCallback) {\n const clonedSong = new Song();\n\n this.lines.forEach((line) => {\n clonedSong.addLine();\n\n line.items.forEach((item) => {\n const changedItem = func(item);\n\n if (changedItem) {\n clonedSong.addItem(changedItem);\n }\n });\n });\n\n return clonedSong;\n }\n\n /**\n * Change the song contents inline. Return a new {@link Line} to replace it. Return `null` to remove it.\n * @example\n * // remove lines with only Tags:\n * song.mapLines((line) => {\n * if (line.items.every(item => item instanceof Tag)) {\n * return null;\n * }\n *\n * return line;\n * });\n * @param {MapLinesCallback} func the callback function\n * @returns {Song} the changed song\n */\n mapLines(func: MapLinesCallback) {\n const clonedSong = new Song();\n\n this.lines.forEach((line) => {\n const changedLine = func(line);\n\n if (changedLine) {\n clonedSong.addLine();\n changedLine.items.forEach((item) => clonedSong.addItem(item));\n }\n });\n\n return clonedSong;\n }\n\n private updateItem(findCallback, updateCallback, notFoundCallback) {\n let found = false;\n\n const updatedSong = this.mapItems((item) => {\n if (findCallback(item)) {\n found = true;\n return updateCallback(item);\n }\n\n return item;\n });\n\n if (!found) {\n return notFoundCallback(updatedSong);\n }\n\n return updatedSong;\n }\n\n private removeItem(callback) {\n return this.mapLines((line) => {\n const { items } = line;\n const index = items.findIndex(callback);\n\n if (index === -1) {\n return line;\n }\n\n if (items.length === 1) {\n return null;\n }\n\n return line.set({\n items: [...items.slice(0, index), ...items.slice(index + 1)],\n });\n });\n }\n}\n\nexport default Song;\n","import ChordLyricsPair from './chord_lyrics_pair';\nimport Tag from './tag';\nimport Comment from './comment';\nimport { CHORUS, NONE, VERSE } from '../constants';\nimport Item from './item';\n\n/**\n * Represents a line in a chord sheet, consisting of items of type ChordLyricsPair or Tag\n */\nclass Line {\n /**\n * The items ({@link ChordLyricsPair} or {@link Tag} or {@link Comment}) of which the line consists\n * @member\n * @type {Array.<(ChordLyricsPair|Tag|Comment)>}\n */\n items: Item[] = [];\n\n /**\n * The line type, This is set by the ChordProParser when it read tags like {start_of_chorus} or {start_of_verse}\n * Values can be {@link VERSE}, {@link CHORUS} or {@link NONE}\n * @member\n * @type {string}\n */\n type: 'verse' | 'chorus' | 'none' = NONE;\n\n /**\n * @ignore\n * @type {ChordLyricsPair}\n */\n currentChordLyricsPair: ChordLyricsPair = null;\n\n /**\n * @ignore\n * @type {string|null}\n */\n key?: string = null;\n\n /**\n * @ignore\n * @type {string|null}\n */\n transposeKey?: string = null;\n\n constructor({ type, items }: { type: 'verse' | 'chorus' | 'none', items: Item[]} = { type: NONE, items: [] }) {\n this.type = type;\n this.items = items;\n }\n\n /**\n * Indicates whether the line contains any items\n * @returns {boolean}\n */\n isEmpty() {\n return this.items.length === 0;\n }\n\n /**\n * Adds an item ({@link ChordLyricsPair} or {@link Tag}) to the line\n * @param {ChordLyricsPair|Tag} item The item to be added\n */\n addItem(item: Item) {\n if (item instanceof Tag) {\n this.addTag(item);\n } else if (item instanceof ChordLyricsPair) {\n this.addChordLyricsPair(item);\n } else if (item instanceof Comment) {\n this.addComment(item);\n } else {\n this.items.push(item);\n }\n }\n\n /**\n * Indicates whether the line contains items that are renderable\n * @returns {boolean}\n */\n hasRenderableItems() {\n return this.items.some((item) => item.isRenderable());\n }\n\n /**\n * Returns a deep copy of the line and all of its items\n * @returns {Line}\n */\n clone() {\n return this.mapItems(null);\n }\n\n mapItems(func) {\n const clonedLine = new Line();\n\n clonedLine.items = this.items\n .map((item) => {\n const clonedItem = item.clone();\n return func ? func(clonedItem) : clonedItem;\n })\n .filter((item) => item);\n\n clonedLine.type = this.type;\n return clonedLine;\n }\n\n /**\n * Indicates whether the line type is {@link VERSE}\n * @returns {boolean}\n */\n isVerse() {\n return this.type === VERSE;\n }\n\n /**\n * Indicates whether the line type is {@link CHORUS}\n * @returns {boolean}\n */\n isChorus() {\n return this.type === CHORUS;\n }\n\n /**\n * Indicates whether the line contains items that are renderable. Please use {@link hasRenderableItems}\n * @deprecated\n * @returns {boolean}\n */\n hasContent() {\n return this.hasRenderableItems();\n }\n\n addChordLyricsPair(chords = null, lyrics = null) {\n if (chords instanceof ChordLyricsPair) {\n this.currentChordLyricsPair = chords;\n } else {\n this.currentChordLyricsPair = new ChordLyricsPair(chords, lyrics);\n }\n\n this.items.push(this.currentChordLyricsPair);\n return this.currentChordLyricsPair;\n }\n\n ensureChordLyricsPair() {\n if (!this.currentChordLyricsPair) {\n this.addChordLyricsPair();\n }\n }\n\n chords(chr) {\n this.ensureChordLyricsPair();\n this.currentChordLyricsPair.chords += chr;\n }\n\n lyrics(chr) {\n this.ensureChordLyricsPair();\n this.currentChordLyricsPair.lyrics += chr;\n }\n\n addTag(name, value = null) {\n const tag = (name instanceof Tag) ? name : new Tag(name, value);\n this.items.push(tag);\n return tag;\n }\n\n addComment(content) {\n const comment = (content instanceof Comment) ? content : new Comment(content);\n this.items.push(comment);\n return comment;\n }\n\n set(properties) {\n return new Line(\n {\n type: this.type,\n items: this.items,\n ...properties,\n },\n );\n }\n}\n\nexport default Line;\n","import Chord from '../chord';\nimport Key from '../key';\n\n/**\n * Represents a chord with the corresponding (partial) lyrics\n */\nclass ChordLyricsPair {\n chords: string;\n\n lyrics: string;\n\n /**\n * Initialises a ChordLyricsPair\n * @param {string} chords The chords\n * @param {string} lyrics The lyrics\n */\n constructor(chords = '', lyrics = '') {\n /**\n * The chords\n * @member\n * @type {string}\n */\n this.chords = chords || '';\n\n /**\n * The lyrics\n * @member\n * @type {string}\n */\n this.lyrics = lyrics || '';\n }\n\n /**\n * Indicates whether a ChordLyricsPair should be visible in a formatted chord sheet (except for ChordPro sheets)\n * @returns {boolean}\n */\n isRenderable() {\n return true;\n }\n\n /**\n * Returns a deep copy of the ChordLyricsPair, useful when programmatically transforming a song\n * @returns {ChordLyricsPair}\n */\n clone() {\n return new ChordLyricsPair(this.chords, this.lyrics);\n }\n\n toString() {\n return `ChordLyricsPair(chords=${this.chords}, lyrics=${this.lyrics})`;\n }\n\n set(properties): ChordLyricsPair {\n return new ChordLyricsPair(\n properties.chords || this.chords,\n properties.lyrics || this.lyrics,\n );\n }\n\n setLyrics(lyrics: string) {\n return this.set({ lyrics });\n }\n\n transpose(delta: number, key: string | Key | null = null, { normalizeChordSuffix = false } = {}): ChordLyricsPair {\n const chordObj = Chord.parse(this.chords);\n\n if (chordObj) {\n let transposedChord = chordObj.transpose(delta);\n\n if (key) {\n transposedChord = transposedChord.normalize(key, { normalizeSuffix: normalizeChordSuffix });\n }\n\n return this.set({ chords: transposedChord.toString() });\n }\n\n return this.clone();\n }\n}\n\nexport default ChordLyricsPair;\n","import Key from './key';\nimport SUFFIX_MAPPING from './normalize_mappings/suffix-normalize-mapping';\n\nimport {\n NUMERAL,\n NUMERIC,\n ROMAN_NUMERALS,\n SYMBOL,\n} from './constants';\n\nimport {\n deprecate,\n isBlank,\n parseWithRegexes,\n presence,\n} from './utilities';\n\nfunction normalizeChordSuffix(suffix) {\n if (SUFFIX_MAPPING[suffix] === '[blank]') {\n return null;\n }\n\n return SUFFIX_MAPPING[suffix] || suffix;\n}\n\nconst chordRegex = (\n /^(?<base>[A-G])(?<modifier>#|b)?(?<suffix>[^/\\s]*)(\\/(?<bassBase>[A-G])(?<bassModifier>#|b)?)?$/i\n);\n\nconst numericChordRegex = (\n /^(?<modifier>#|b)?(?<base>[1-7])(?<suffix>[^/\\s]*)(\\/(?<bassModifier>#|b)?(?<bassBase>[0-7]))?$/\n);\n\nconst sortedNumerals = [...ROMAN_NUMERALS].sort((numeralA, numeralB) => numeralB.length - numeralA.length);\n\nconst numerals = [\n ...sortedNumerals,\n ...sortedNumerals.map((numeral) => numeral.toLowerCase()),\n].join('|');\n\nconst numeralChordRegex = (\n // eslint-disable-next-line max-len\n new RegExp(`^(?<modifier>#|b)?(?<base>${numerals})(?<suffix>[^/\\\\s]*)(\\\\/(?<bassModifier>#|b)?(?<bassBase>${numerals}))?$`)\n);\n\nconst regexes = [numericChordRegex, numeralChordRegex, chordRegex];\n\n/**\n * Represents a Chord, consisting of a root, suffix (quality) and bass\n */\nclass Chord {\n root: Key;\n\n suffix?: string;\n\n bass?: Key;\n\n /**\n * Tries to parse a chord string into a chord\n * @param chordString the chord string, eg `Esus4/G#` or `1sus4/#3`\n * @returns {null|Chord}\n */\n static parse(chordString) {\n return parseWithRegexes(chordString, Chord, regexes);\n }\n\n /**\n * Returns a deep copy of the chord\n * @returns {Chord}\n */\n clone() {\n return this.set({});\n }\n\n /**\n * Converts the chord to a chord symbol, using the supplied key as a reference.\n * For example, a numeric chord `#4` with reference key `E` will return the chord symbol `A#`.\n * When the chord is already a chord symbol, it will return a clone of the object.\n * @param {Key|string} [key=null] the reference key\n * @returns {Chord} the chord symbol\n */\n toChordSymbol(key = null) {\n if (this.isChordSymbol()) {\n return this.clone();\n }\n\n const keyObj = Key.wrap(key);\n const rootKey = this.root.toChordSymbol(keyObj).normalizeEnharmonics(keyObj);\n\n let chordSymbolChord = new Chord({\n suffix: normalizeChordSuffix(this.suffix),\n root: rootKey,\n bass: this.bass?.toChordSymbol(keyObj).normalizeEnharmonics(rootKey),\n });\n\n if (this.root.isMinor()) {\n chordSymbolChord = chordSymbolChord.makeMinor();\n }\n\n return chordSymbolChord;\n }\n\n /**\n * Converts the chord to a chord symbol string, using the supplied key as a reference.\n * For example, a numeric chord `#4` with reference key `E` will return the chord symbol `A#`.\n * When the chord is already a chord symbol, it will return a string version of the chord.\n * @param {Key|string} [key=null] the reference key\n * @returns {string} the chord symbol string\n * @see {toChordSymbol}\n */\n toChordSymbolString(key = null) {\n return this.toChordSymbol(key).toString();\n }\n\n /**\n * Determines whether the chord is a chord symbol\n * @returns {boolean}\n */\n isChordSymbol() {\n return this.is(SYMBOL);\n }\n\n /**\n * Converts the chord to a numeric chord, using the supplied key as a reference.\n * For example, a chord symbol A# with reference key E will return the numeric chord #4.\n * @param {Key|string} [key=null] the reference key\n * @returns {Chord} the numeric chord\n */\n toNumeric(key = null) {\n if (this.isNumeric()) {\n return this.clone();\n }\n\n if (this.isNumeral()) {\n return this.set({\n root: this.root.toNumeric(),\n bass: this.bass?.toNumeric(),\n });\n }\n\n const keyObj = Key.wrap(key);\n\n return new Chord({\n suffix: normalizeChordSuffix(this.suffix),\n root: this.root.toNumeric(keyObj),\n bass: this.bass?.toNumeric(keyObj),\n });\n }\n\n /**\n * Converts the chord to a numeral chord, using the supplied key as a reference.\n * For example, a chord symbol A# with reference key E will return the numeral chord #IV.\n * @param {Key|string|null} key the reference key. The key is required when converting a chord symbol\n * @returns {Chord} the numeral chord\n */\n toNumeral(key = null) {\n if (this.isNumeral()) {\n return this.clone();\n }\n\n if (this.isNumeric()) {\n return this.set({\n root: this.root.toNumeral(),\n bass: this.bass?.toNumeral(),\n });\n }\n\n const keyObj = Key.wrap(key);\n\n return new Chord({\n suffix: normalizeChordSuffix(this.suffix),\n root: this.root.toNumeral(keyObj),\n bass: this.bass?.toNumeral(keyObj),\n });\n }\n\n /**\n * Converts the chord to a numeral chord string, using the supplied kye as a reference.\n * For example, a chord symbol A# with reference key E will return the numeral chord #4.\n * @param {Key|string} [key=null] the reference key\n * @returns {string} the numeral chord string\n * @see {toNumeral}\n */\n toNumeralString(key = null) {\n return this.toNumeral(key).toString();\n }\n\n /**\n * Determines whether the chord is numeric\n * @returns {boolean}\n */\n isNumeric() {\n return this.is(NUMERIC);\n }\n\n /**\n * Converts the chord to a numeric chord string, using the supplied kye as a reference.\n * For example, a chord symbol A# with reference key E will return the numeric chord #4.\n * @param {Key|string} [key=null] the reference key\n * @returns {string} the numeric chord string\n * @see {toNumeric}\n */\n toNumericString(key = null) {\n return this.toNumeric(key).toString();\n }\n\n /**\n * Determines whether the chord is a numeral\n * @returns {boolean}\n */\n isNumeral() {\n return this.is(NUMERAL);\n }\n\n /**\n * Converts the chord to a string, eg `Esus4/G#` or `1sus4/#3`\n * @returns {string} the chord string\n */\n toString() {\n const chordString = this.root.toString({ showMinor: false }) + (this.suffix || '');\n\n if (this.bass) {\n return `${chordString}/${this.bass.toString()}`;\n }\n\n return chordString;\n }\n\n /**\n * Normalizes the chord root and bass notes:\n * - Fb becomes E\n * - Cb becomes B\n * - B# becomes C\n * - E# becomes F\n * - 4b becomes 3\n * - 1b becomes 7\n * - 7# becomes 1\n * - 3# becomes 4\n *\n * Besides that it normalizes the suffix if `normalizeSuffix` is `true`.\n * For example, `sus2` becomes `2`, `sus4` becomes `sus`.\n * All suffix normalizations can be found in `src/normalize_mappings/suffix-mapping.txt`.\n * @param {Key|string} [key=null] the key to normalize to\n * @param {Object} [options={}] options\n * @param {boolean} [options.normalizeSuffix=true] whether to normalize the chord suffix after transposing\n * @returns {Chord} the normalized chord\n */\n normalize(key = null, { normalizeSuffix = true } = {}) {\n const suffix = normalizeSuffix ? normalizeChordSuffix(this.suffix) : this.suffix;\n\n if (isBlank(key)) {\n return this.process('normalize').set({ suffix });\n }\n\n return this.set({\n suffix,\n root: this.root.normalizeEnharmonics(key),\n bass: this.bass ? this.bass.normalizeEnharmonics(this.root.toString()) : null,\n });\n }\n\n /**\n * Switches to the specified modifier\n * @param newModifier the modifier to use: `'#'` or `'b'`\n * @returns {Chord} the new, changed chord\n */\n useModifier(newModifier) {\n return this.process('useModifier', newModifier);\n }\n\n /**\n * Transposes the chord up by 1 semitone. Eg. A becomes A#, Eb becomes E\n * @returns {Chord} the new, transposed chord\n */\n transposeUp() {\n return this.process('transposeUp');\n }\n\n /**\n * Transposes the chord down by 1 semitone. Eg. A# becomes A, E becomes Eb\n * @returns {Chord} the new, transposed chord\n */\n transposeDown() {\n return this.process('transposeDown');\n }\n\n /**\n * Transposes the chord by the specified number of semitones\n * @param delta de number of semitones\n * @returns {Chord} the new, transposed chord\n */\n transpose(delta) {\n return this.process('transpose', delta);\n }\n\n constructor(\n {\n base = null,\n modifier = null,\n suffix = null,\n bassBase = null,\n bassModifier = null,\n root = null,\n bass = null,\n },\n ) {\n this.suffix = presence(suffix);\n const isMinor = suffix && suffix[0] === 'm' && suffix.substring(0, 3).toLowerCase() !== 'maj';\n this.root = root || new Key({ note: base, modifier, minor: isMinor });\n\n if (bass) {\n this.bass = bass;\n } else if (bassBase) {\n this.bass = new Key({ note: bassBase, modifier: bassModifier, minor: isMinor });\n } else {\n this.bass = null;\n }\n }\n\n makeMinor() {\n if (!this.suffix || this.suffix[0] !== 'm') {\n return this.set({\n suffix: `m${this.suffix || ''}`,\n });\n }\n\n return this.clone();\n }\n\n set(properties) {\n return new Chord(\n {\n root: this.root.clone(),\n suffix: this.suffix,\n bass: this.bass?.clone(),\n ...properties,\n },\n );\n }\n\n private get rootNote() {\n return this.root.note.note;\n }\n\n private process(func, arg = null) {\n return this.set({\n root: this.root[func](arg),\n bass: this.bass ? this.bass[func](arg) : null,\n });\n }\n\n private is(type) {\n return this.root.is(type) && (!this.bass || this.bass.is(type));\n }\n}\n\n/**\n * Tries to parse a chord string into a chord\n * @param chordString the chord string, eg Esus4/G# or 1sus4/#3\n * @deprecated Please use {@link Chord.parse} instead\n * @returns {null|Chord}\n */\nexport function parseChord(chordString) {\n deprecate('parseChord() is deprecated, please use Chord.parse() instead');\n return Chord.parse(chordString);\n}\n\nexport default Chord;\n","import Note from './note';\nimport { NUMERAL, NUMERIC, SYMBOL } from './constants';\nimport ENHARMONIC_MAPPING from './normalize_mappings/enharmonic-normalize';\nimport { parseWithRegexes } from './utilities';\n\nconst FLAT = 'b';\nconst SHARP = '#';\n\nconst MODIFIER_TRANSPOSITION = {\n [SHARP]: 1,\n [FLAT]: -1,\n};\n\nconst symbolKeyRegex = (\n /^(?<note>[A-G])(?<modifier>#|b)?(?<minor>m)?$/i\n);\n\nconst numericKeyRegex = (\n /^(?<modifier>#|b)?(?<note>[1-7])(?<minor>m)?$/\n);\n\nconst numeralKeyRegex = (\n /^(?<modifier>#|b)?(?<note>I{1,3}|IV|VI{0,2}|i{1,3}|iv|vi{0,2})$/\n);\n\nconst regexes = [symbolKeyRegex, numericKeyRegex, numeralKeyRegex];\n\nclass Key {\n note: Note;\n\n modifier?: string = null;\n\n minor: boolean = false;\n\n static parse(keyString) {\n return parseWithRegexes(keyString, Key, regexes);\n }\n\n static wrap(keyStringOrObject) {\n if (keyStringOrObject instanceof Key) {\n return keyStringOrObject;\n }\n\n return this.parse(keyStringOrObject);\n }\n\n static toString(keyStringOrObject) {\n return `${Key.wrap(keyStringOrObject)}`;\n }\n\n static distance(oneKey, otherKey) {\n return this.wrap(oneKey).distanceTo(otherKey);\n }\n\n distanceTo(otherKey) {\n const otherKeyObj = Key.wrap(otherKey);\n let key = this.useModifier(otherKeyObj.modifier);\n let delta = 0;\n\n while (!key.equals(otherKeyObj) && delta < 20) {\n key = key.transposeUp().useModifier(otherKeyObj.modifier);\n delta += 1;\n }\n\n return delta;\n }\n\n constructor({ note, modifier = null, minor = false }) {\n this.note = (note instanceof Note) ? note : Note.parse(note);\n this.modifier = modifier || null;\n this.minor = !!minor || false;\n\n if (this.minor) {\n this.note.minor = true;\n }\n }\n\n isMinor() {\n return this.minor || this.note.isMinor();\n }\n\n clone() {\n return this.set({});\n }\n\n toChordSymbol(key) {\n if (this.is(SYMBOL)) {\n return this.clone();\n }\n\n const transposeDistance = this.note.getTransposeDistance(key.minor) + (MODIFIER_TRANSPOSITION[this.modifier] || 0);\n\n return key.transpose(transposeDistance).normalize().useModifier(key.modifier);\n }\n\n toChordSymbolString(key) {\n return this.toChordSymbol(key).toString();\n }\n\n is(type) {\n return this.note.is(type);\n }\n\n isNumeric() {\n return this.is(NUMERIC);\n }\n\n isChordSymbol() {\n return this.is(SYMBOL);\n }\n\n isNumeral() {\n return this.is(NUMERAL);\n }\n\n equals({ note, modifier = null }) {\n return this.note.equals(note) && this.modifier === modifier;\n }\n\n toNumeric(key: Key = null) {\n if (this.isNumeric()) {\n return this.clone();\n }\n\n if (this.isNumeral()) {\n return this.set({\n note: this.note.toNumeric(),\n });\n }\n\n return this.transposeNoteUpToKey(1, key);\n }\n\n toNumericString(key = null) {\n return this.toNumeric(key).toString();\n }\n\n toNumeral(key = null) {\n if (this.isNumeral()) {\n return this.clone();\n }\n\n if (this.isNumeric()) {\n return this.set({\n note: this.note.toNumeral(),\n });\n }\n\n return this.transposeNoteUpToKey('I', key);\n }\n\n toNumeralString(key = null) {\n return this.toNumeral(key).toString();\n }\n\n toString({ showMinor = true } = {}) {\n switch (this.note.type) {\n case SYMBOL:\n return this.formatChordSymbolString(showMinor);\n case NUMERIC:\n return this.formatNumericString(showMinor);\n case NUMERAL:\n return this.formatNumeralString();\n default:\n throw new Error(`Unexpected note type ${this.note.type}`);\n }\n }\n\n private formatChordSymbolString(showMinor: boolean) {\n return `${this.note}${this.modifier || ''}${this.minor && showMinor ? 'm' : ''}`;\n }\n\n private formatNumericString(showMinor: boolean) {\n return `${this.modifier || ''}${this.note}${this.minor && showMinor ? 'm' : ''}`;\n }\n\n private formatNumeralString() {\n return `${this.modifier || ''}${this.note}`;\n }\n\n transpose(delta) {\n if (delta === 0) {\n return this;\n }\n\n const originalModifier = this.modifier;\n let transposedKey = this.clone();\n const func = (delta < 0) ? 'transposeDown' : 'transposeUp';\n\n for (let i = 0, count = Math.abs(delta); i < count; i += 1) {\n transposedKey = transposedKey[func]();\n }\n\n return transposedKey.useModifier(originalModifier);\n }\n\n transposeUp() {\n if (this.modifier === FLAT) {\n return this.set({ modifier: null });\n }\n\n if (this.note.isOneOf(3, 7, 'E', 'B')) {\n return this.set({\n note: this.note.up(),\n });\n }\n\n if (this.modifier === SHARP) {\n return this.set({\n note: this.note.up(),\n modifier: null,\n });\n }\n\n return this.set({ modifier: SHARP });\n }\n\n transposeDown() {\n if (this.modifier === SHARP) {\n return this.set({ modifier: null });\n }\n\n if (this.note.isOneOf(1, 4, 'C', 'F')) {\n return this.set({\n note: this.note.down(),\n });\n }\n\n if (this.modifier === FLAT) {\n return this.set({\n note: this.note.down(),\n modifier: null,\n });\n }\n\n return this.set({ modifier: FLAT });\n }\n\n useModifier(newModifier) {\n if (this.modifier === FLAT && newModifier === SHARP) {\n return this.set({\n note: this.note.down(),\n modifier: SHARP,\n });\n }\n\n if (this.modifier === SHARP && newModifier === FLAT) {\n return this.set({\n note: this.note.up(),\n modifier: FLAT,\n });\n }\n\n return this.clone();\n }\n\n normalize() {\n if (this.modifier === SHARP && this.note.isOneOf(3, 7, 'E', 'B')) {\n return this.set({\n note: this.note.up(),\n modifier: null,\n });\n }\n\n if (this.modifier === FLAT && this.note.isOneOf(1, 4, 'C', 'F')) {\n return this.set({\n note: this.note.down(),\n modifier: null,\n });\n }\n\n return this.clone();\n }\n\n normalizeEnharmonics(key: Key | string) {\n if (key) {\n const rootKeyString = Key.wrap(key).toString({ showMinor: true });\n const enharmonics = ENHARMONIC_MAPPING[rootKeyString];\n const thisKeyString = this.toString({ showMinor: false });\n\n if (enharmonics && enharmonics[thisKeyString]) {\n return Key.parse(enharmonics[thisKeyString]);\n }\n }\n return this.clone();\n }\n\n private set(attributes) {\n return new Key({\n note: this.note.clone(),\n modifier: this.modifier,\n minor: !!this.minor,\n ...attributes,\n });\n }\n\n private transposeNoteUpToKey(note: number | string, key: Key) {\n let numericKey = new Key({ note });\n let symbolKey = key.clone();\n const reference = this.clone().normalize().useModifier(key.modifier).normalizeEnharmonics(key);\n\n while (!symbolKey.equals(reference)) {\n numericKey = numericKey.transposeUp().useModifier(key.modifier);\n symbolKey = symbolKey.transposeUp().normalize().useModifier(key.modifier).normalizeEnharmonics(key);\n }\n\n return numericKey;\n }\n}\n\nexport default Key;\n","import {\n NUMERAL, NUMERIC, ROMAN_NUMERALS, SYMBOL,\n} from './constants';\n\nconst A = 'A'.charCodeAt(0);\nconst G = 'G'.charCodeAt(0);\n\nconst TRANSPOSE_DISTANCE_MAJOR = [null, 0, 2, 4, 5, 7, 9, 11];\nconst TRANSPOSE_DISTANCE_MINOR = [null, 0, 2, 3, 5, 7, 8, 11];\n\nfunction keyToCharCode(key) {\n return key.toUpperCase().charCodeAt(0);\n}\n\nfunction clamp(note, min, max) {\n let newNote = note;\n\n if (newNote < min) {\n newNote += 7;\n } else if (newNote > max) {\n newNote -= 7;\n }\n\n return newNote;\n}\n\nfunction numeralToNumber(numeral) {\n for (let i = 0, count = ROMAN_NUMERALS.length; i < count; i += 1) {\n const romanNumeral = ROMAN_NUMERALS[i];\n\n if (romanNumeral === numeral || romanNumeral.toLowerCase() === numeral) {\n return i + 1;\n }\n }\n\n return null;\n}\n\nfunction numberToNumeral(number) {\n return ROMAN_NUMERALS[number - 1];\n}\n\nclass Note {\n _note: string;\n\n type: string;\n\n minor: boolean;\n\n constructor({ note, type, minor = false }) {\n this._note = note;\n this.type = type;\n this.minor = minor;\n }\n\n static parse(note) {\n if (/^[A-Ga-g]$/.test(note)) {\n return new Note({ note: note.toUpperCase(), type: SYMBOL });\n }\n\n if (/^[1-7]$/.test(note)) {\n return new Note({ note: parseInt(note, 10), type: NUMERIC });\n }\n\n const romanNumeralValue = numeralToNumber(note);\n\n if (romanNumeralValue) {\n return new Note({\n note: romanNumeralValue,\n type: NUMERAL,\n minor: (note.toLowerCase() === note),\n });\n }\n\n throw new Error(`Invalid note ${note}`);\n }\n\n toNumeral() {\n if (this.isNumeral()) {\n return this.clone();\n }\n\n if (this.isNumeric()) {\n return this.set({ type: NUMERAL });\n }\n\n throw new Error(`Converting a ${this.type} note to numeral is not supported`);\n }\n\n toNumeric() {\n if (this.isNumeric()) {\n return this.clone();\n }\n\n if (this.isNumeral()) {\n return this.set({ type: NUMERIC });\n }\n\n throw new Error(`Converting a ${this.type} note to numeric is not supported`);\n }\n\n isMinor() {\n return this.minor;\n }\n\n equals(otherNote) {\n return this._note === otherNote._note && this.type === otherNote.type && this.minor === otherNote.minor;\n }\n\n clone() {\n return this.set({});\n }\n\n up() {\n return this.change(1);\n }\n\n down() {\n return this.change(-1);\n }\n\n isOneOf(...options) {\n return options.includes(this._note);\n }\n\n isNumeric() {\n return this.is(NUMERIC);\n }\n\n isChordSymbol() {\n return this.is(SYMBOL);\n }\n\n isNumeral() {\n return this.is(NUMERAL);\n }\n\n is(noteType) {\n return this.type === noteType;\n }\n\n getTransposeDistance(minorKey) {\n if (minorKey) {\n return TRANSPOSE_DISTANCE_MINOR[this._note];\n }\n\n return TRANSPOSE_DISTANCE_MAJOR[this._note];\n }\n\n change(delta) {\n if (this.isChordSymbol()) {\n let charCode;\n charCode = keyToCharCode(this._note);\n charCode += delta;\n charCode = clamp(charCode, A, G);\n\n return this.set({ note: String.fromCharCode(charCode) });\n }\n\n let newNote = clamp(this._note + delta, 1, 7);\n\n if (newNote < 1) {\n newNote += 7;\n } else if (newNote > 7) {\n newNote -= 7;\n }\n\n return this.set({ note: newNote });\n }\n\n get note() {\n if (this.isNumeral()) {\n const numeral = numberToNumeral(this._note);\n\n if (this.isMinor()) {\n return numeral.toLowerCase();\n }\n\n return numeral;\n }\n\n return this._note;\n }\n\n toString() {\n switch (this.type) {\n case NUMERAL:\n return `${this.minor ? this.note.toLowerCase() : this.note.toUpperCase()}`;\n default:\n return `${this.note}`;\n }\n }\n\n private set(attributes) {\n return new Note({\n note: this._note,\n type: this.type,\n minor: this.minor,\n ...attributes,\n });\n }\n}\n\nexport default Note;\n","/**\n * Used to mark a paragraph as verse\n * @constant\n * @type {string}\n */\nexport const VERSE = 'verse';\n\n/**\n * Used to mark a paragraph as chorus\n * @constant\n * @type {string}\n */\nexport const CHORUS = 'chorus';\n\n/**\n * Used to mark a paragraph as not containing a line marked with a type\n * @constant\n * @type {string}\n */\nexport const NONE = 'none';\n\n/**\n * Used to mark a paragraph as containing lines with both verse and chorus type\n * @constant\n * @type {string}\n */\nexport const INDETERMINATE = 'indeterminate';\n\n/**\n * Used to mark a paragraph as tab\n * @constant\n * @type {string}\n */\nexport const TAB = 'tab';\n\nexport const SYMBOL = 'symbol';\nexport const NUMERIC = 'numeric';\nexport const NUMERAL = 'numeral';\n\nexport const ROMAN_NUMERALS = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII'];\n","export default {\n 'Ab': {\n 'B': 'Cb',\n },\n 'Cb': {\n 'B': 'Cb',\n 'A#': 'Bb',\n 'E': 'Fb',\n },\n 'C': {\n 'C#': 'Db',\n 'D#': 'Eb',\n 'F#': 'Gb',\n 'G#': 'Ab',\n 'A#': 'Bb',\n },\n 'C#': {\n 'D#': 'Eb',\n 'A#': 'Bb',\n },\n 'Db': {\n 'B': 'Cb',\n 'F#': 'Gb',\n },\n 'D': {\n 'D#': 'Eb',\n 'A#': 'Bb',\n },\n 'E': {\n 'Ab': 'G#',\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'F': {\n 'A#': 'Bb',\n 'F#': 'Gb',\n 'C#': 'Db',\n 'D#': 'Eb',\n 'G#': 'Ab',\n },\n 'F#': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'Gb': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'G#': 'Ab',\n 'B': 'Cb',\n 'E': 'Fb',\n },\n 'G': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'G#': 'Ab',\n },\n 'G#': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'Am': {\n 'Gb': 'G',\n 'G#': 'Ab',\n 'F#': 'Gb',\n 'C#': 'Db',\n 'D#': 'Eb',\n 'A#': 'Bb',\n },\n 'Bbm': {\n 'Cb': 'B',\n },\n 'Bm': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'C#m': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'Cm': {\n 'G#': 'Ab',\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'F#': 'Gb',\n 'C#': 'Db',\n },\n 'Dm': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'Em': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'F#m': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'Gb': 'F#',\n 'Ab': 'G#',\n 'Db': 'C#',\n },\n 'Fm': {\n 'G#': 'Ab',\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'F#': 'Gb',\n 'C#': 'Db',\n },\n 'Gm': {\n 'G#': 'Ab',\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'G#m': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n }\n}\n","export const pushNew = (collection, Klass) => {\n const newObject = new Klass();\n collection.push(newObject);\n return newObject;\n};\n\nexport const hasChordContents = (line) => line.items.some((item) => !!item.chords);\n\nexport const isEvaluatable = (item) => typeof item.evaluate === 'function';\n\nexport const padLeft = (str, length) => {\n let paddedString = str;\n for (let l = str.length; l < length; l += 1, paddedString += ' ');\n return paddedString;\n};\n\nexport const isPresent = (object) => object && object.length > 0;\n\nexport const isBlank = (object) => !isPresent(object);\n\nexport const presence = (object) => (isPresent(object) ? object : null);\n\nfunction dasherize(string) {\n return string.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n}\n\nexport function scopeCss(css, scope) {\n return Object\n .entries(css)\n .map(([selector, styles]) => {\n const rules = Object\n .entries(styles)\n .map(([property, value]) => `${dasherize(property)}: ${value};`)\n .join('\\n ');\n\n const scopedSelector = `${scope} ${selector}`.trim();\n\n return `\n${scopedSelector} {\n ${rules}\n}`.substring(1);\n })\n .join('\\n\\n');\n}\n\nexport function deprecate(message) {\n try {\n throw new Error(`DEPRECATION: ${message}`);\n } catch (e) {\n const proc = globalThis.process;\n\n if (typeof proc === 'object' && typeof proc.emitWarning === 'function') {\n proc.emitWarning(`${message}\\n${e.stack}`);\n } else {\n console.warn(`${message}\\n${e.stack}`);\n }\n }\n}\n\nexport function isEmptyString(string) {\n return (string === null || string === undefined || string === '');\n}\n\nexport function parseWithRegexes(string: string, constructor, regexes) {\n if (isEmptyString(string)) {\n return null;\n }\n\n for (let i = 0, count = regexes.length; i < count; i += 1) {\n const match = string.match(regexes[i]);\n\n if (match) {\n return new constructor(match.groups);\n }\n }\n\n return null;\n}\n","const mapping: Record<string, string> = {\n \"2\": \"2\",\n \"4\": \"sus\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"9\": \"9\",\n \"11\": \"11\",\n \"13\": \"13\",\n \"42\": \"4(2)\",\n \"69\": \"6(9)\",\n \"sus#42\": \"sus#42\",\n \"sus(no5)\": \"sus(no5)\",\n \"sus4\": \"sus\",\n \"sus\": \"sus\",\n \"ma9(-5)\": \"ma9(b5)\",\n \"ma9-5\": \"ma9(b5)\",\n \"ma9b5\": \"ma9(b5)\",\n \"maj9(b5)\": \"ma9(b5)\",\n \"+9(-5)\": \"ma9(b5)\",\n \"M9-5\": \"ma9(b5)\",\n \"+9b5\": \"ma9(b5)\",\n \"+9(b5)\": \"ma9(b5)\",\n \"maj9(-5)\": \"ma9(b5)\",\n \"maj9-5\": \"ma9(b5)\",\n \"maj9b5\": \"ma9(b5)\",\n \"ma9(b5)\": \"ma9(b5)\",\n \"ma9(-13+5)\": \"ma9(b13#5)\",\n \"ma9-13+5\": \"ma9(b13#5)\",\n \"ma7b13#5\": \"ma9(b13#5)\",\n \"maj9(b13#5)\": \"ma9(b13#5)\",\n \"+9(-13+5)\": \"ma9(b13#5)\",\n \"M9-13+5\": \"ma9(b13#5)\",\n \"+9b13#5\": \"ma9(b13#5)\",\n \"+9(b13#5)\": \"ma9(b13#5)\",\n \"maj9(-13+5)\": \"ma9(b13#5)\",\n \"maj9-13+5\": \"ma9(b13#5)\",\n \"maj9b13#5\": \"ma9(b13#5)\",\n \"ma9(b13#5)\": \"ma9(b13#5)\",\n \"ma9(-13)\": \"ma9(b13)\",\n \"ma9-13\": \"ma9(b13)\",\n \"ma7b13\": \"ma7(b13)\",\n \"maj9(b13)\": \"ma9(b13)\",\n \"+9(-13)\": \"ma9(b13)\",\n \"M9-13\": \"ma9(b13)\",\n \"+9b13\": \"ma9(b13)\",\n \"+9(b13)\": \"ma9(b13)\",\n \"maj9(-13)\": \"ma9(b13)\",\n \"maj9-13\": \"ma9(b13)\",\n \"maj9b13\": \"ma9(b13)\",\n \"ma9(b13)\": \"ma9(b13)\",\n \"ma9(13)\": \"ma9(13)\",\n \"ma9(+5)\": \"ma9(#5)\",\n \"ma9+5\": \"ma9(#5)\",\n \"ma9#5\": \"ma9(#5)\",\n \"maj9(#5)\": \"ma9(#5)\",\n \"+9(+5)\": \"ma9(#5)\",\n \"M9+5\": \"ma9(#5)\",\n \"+9#5\": \"ma9(#5)\",\n \"+9(#5)\": \"ma9(#5)\",\n \"maj9(+5)\": \"ma9(#5)\",\n \"maj9+5\": \"ma9(#5)\",\n \"maj9#5\": \"ma9(#5)\",\n \"ma9(#5)\": \"ma9(#5)\",\n \"ma9(#4)\": \"ma9(#4)\",\n \"ma9(+11+5)\": \"ma9(#11#5)\",\n \"ma9+11+5\": \"ma9(#11#5)\",\n \"ma7#11#5\": \"ma13(#11#5)\",\n \"maj9(#11#5)\": \"ma9(#11#5)\",\n \"+9(+11+5)\": \"ma9(#11#5)\",\n \"M9+11+5\": \"ma9(#11#5)\",\n \"+9#11#5\": \"ma9(#11#5)\",\n \"+9(#11#5)\": \"ma9(#11#5)\",\n \"maj9(+11+5)\": \"ma9(#11#5)\",\n \"maj9+11+5\": \"ma9(#11#5)\",\n \"maj9#11#5\": \"ma9(#11#5)\",\n \"ma9(#11#5)\": \"ma9(#11#5)\",\n \"ma9(+11)\": \"ma9(#11)\",\n \"ma9+11\": \"ma9(#11)\",\n \"ma7#11\": \"ma13(#11)\",\n \"maj9(#11)\": \"ma9(#11)\",\n \"+9(+11)\": \"ma9(#11)\",\n \"M9+11\": \"ma9(#11)\",\n \"+9#11\": \"ma9(#11)\",\n \"+9(#11)\": \"ma9(#11)\",\n \"maj9(+11)\": \"ma9(#11)\",\n \"maj9+11\": \"ma9(#11)\",\n \"maj9#11\": \"ma9(#11)\",\n \"ma9(#11)\": \"ma9(#11)\",\n \"maj9\": \"ma9\",\n \"M9\": \"ma9\",\n \"+9\": \"ma9\",\n \"ma9\": \"ma9\",\n \"9(#7)\": \"ma9\",\n \"ma7(no3)\": \"ma7(no3)\",\n \"ma7(-9)\": \"ma7(b9)\",\n \"ma7-9\": \"ma7(b9)\",\n \"ma7b9\": \"ma7(b9)\",\n \"maj7(b9)\": \"ma7(b9)\",\n \"+7(-9)\": \"ma7(b9)\",\n \"M7-9\": \"ma7(b9)\",\n \"+7b9\": \"ma7(b9)\",\n \"+7(b9)\": \"ma7(b9)\",\n \"maj7(-9)\": \"ma7(b9)\",\n \"maj7-9\": \"ma7(b9)\",\n \"maj7b9\": \"ma7(b9)\",\n \"ma7(b9)\": \"ma7(b9)\",\n \"ma7(-5)\": \"ma7(b5)\",\n \"ma7-5\": \"ma7(b5)\",\n \"ma7b5\": \"ma7(b5)\",\n \"maj7(b5)\": \"ma7(b5)\",\n \"+7(-5)\": \"ma7(b5)\",\n \"M7-5\": \"ma7(b5)\",\n \"+7b5\": \"ma7(b5)\",\n \"+7(b5)\": \"ma7(b5)\",\n \"maj7(-5)\": \"ma7(b5)\",\n \"maj7-5\": \"ma7(b5)\",\n \"maj7b5\": \"ma7(b5)\",\n \"ma7(b5)\": \"ma7(b5)\",\n \"ma7(-13)\": \"ma7(b13)\",\n \"ma7-13\": \"ma7(b13)\",\n \"maj7(b13)\": \"ma7(b13)\",\n \"+7(-13)\": \"ma7(b13)\",\n \"M7-13\": \"ma7(b13)\",\n \"+7b13\": \"ma7(b13)\",\n \"+7(b13)\": \"ma7(b13)\",\n \"maj7(-13)\": \"ma7(b13)\",\n \"maj7-13\": \"ma7(b13)\",\n \"maj7b13\": \"ma7(b13)\",\n \"ma7(b13)\": \"ma7(b13)\",\n \"ma7(+9)\": \"ma7(#9)\",\n \"ma7+9\": \"ma7(#9)\",\n \"ma7#9\": \"ma7(#9)\",\n \"maj7(#9)\": \"ma7(#9)\",\n \"+7(+9)\": \"ma7(#9)\",\n \"M7+9\": \"ma7(#9)\",\n \"+7#9\": \"ma7(#9)\",\n \"+7(#9)\": \"ma7(#9)\",\n \"maj7(+9)\": \"ma7(#9)\",\n \"maj7+9\": \"ma7(#9)\",\n \"maj7#9\": \"ma7(#9)\",\n \"ma7(#9)\": \"ma7(#9)\",\n \"aug(maj7)\": \"ma7(#5)\",\n \"aug(ma7)\": \"ma7(#5)\",\n \"aug(+7)\": \"ma7(#5)\",\n \"aug(M7)\": \"ma7(#5)\",\n \"ma7(+5)\": \"ma7(#5)\",\n \"ma7+5\": \"ma7(#5)\",\n \"ma7#5\": \"ma7(#5)\",\n \"maj7(#5)\": \"ma7(#5)\",\n \"+7(+5)\": \"ma7(#5)\",\n \"M7+5\": \"ma7(#5)\",\n \"+7#5\": \"ma7(#5)\",\n \"+7(#5)\": \"ma7(#5)\",\n \"maj7(+5)\": \"ma7(#5)\",\n \"maj7+5\": \"ma7(#5)\",\n \"maj7#5\": \"ma7(#5)\",\n \"ma7(#5)\": \"ma7(#5)\",\n \"ma7(#4)\": \"ma7(#4)\",\n \"ma7(+11)\": \"ma7(#11)\",\n \"ma7+11\": \"ma7(#11)\",\n \"maj7(#11)\": \"ma7(#11)\",\n \"+7(+11)\": \"ma7(#11)\",\n \"M7+11\": \"ma7(#11)\",\n \"+7#11\": \"ma7(#11)\",\n \"+7(#11)\": \"ma7(#11)\",\n \"maj7(+11)\": \"ma7(#11)\",\n \"maj7+11\": \"ma7(#11)\",\n \"maj7#11\": \"ma7(#11)\",\n \"ma7(#11)\": \"ma7(#11)\",\n \"(triangle)\": \"ma7\",\n \"maj7\": \"ma7\",\n \"Maj7\": \"ma7\",\n \"M7\": \"ma7\",\n \"#7\": \"ma7\",\n \"+7\": \"ma7\",\n \"ma7\": \"ma7\",\n \"ma69\": \"ma6(9)\",\n \"ma6(9)\": \"ma6(9)\",\n \"ma6\": \"ma6\",\n \"ma13(-9+5)\": \"ma13(b9#5)\",\n \"ma13-9+5\": \"ma13(b9#5)\",\n \"ma7b9#5\": \"ma13(b9#5)\",\n \"maj13(b9#5)\": \"ma13(b9#5)\",\n \"+13(-9+5)\": \"ma13(b9#5)\",\n \"M13-9+5\": \"ma13(b9#5)\",\n \"+13b9#5\": \"ma13(b9#5)\",\n \"+13(b9#5)\": \"ma13(b9#5)\",\n \"maj13(-9+5)\": \"ma13(b9#5)\",\n \"maj13-9+5\": \"ma13(b9#5)\",\n \"maj13b9#5\": \"ma13(b9#5)\",\n \"ma13(b9#5)\": \"ma13(b9#5)\",\n \"ma13(-9)\": \"ma13(b9)\",\n \"ma13-9\": \"ma13(b9)\",\n \"ma13b9\": \"ma13(b9)\",\n \"maj13(b9)\": \"ma13(b9)\",\n \"+13(-9)\": \"ma13(b9)\",\n \"M13-9\": \"ma13(b9)\",\n \"+13b9\": \"ma13(b9)\",\n \"+13(b9)\": \"ma13(b9)\",\n \"maj13(-9)\": \"ma13(b9)\",\n \"maj13-9\": \"ma13(b9)\",\n \"maj13b9\": \"ma13(b9)\",\n \"ma13(b9)\": \"ma13(b9)\",\n \"ma13(-5)\": \"ma13(b5)\",\n \"ma13-5\": \"ma13(b5)\",\n \"ma13b5\": \"ma13(b5)\",\n \"maj13(b5)\": \"ma13(b5)\",\n \"+13(-5)\": \"ma13(b5)\",\n \"M13-5\": \"ma13(b5)\",\n \"+13b5\": \"ma13(b5)\",\n \"+13(b5)\": \"ma13(b5)\",\n \"maj13(-5)\": \"ma13(b5)\",\n \"maj13-5\": \"ma13(b5)\",\n \"maj13b5\": \"ma13(b5)\",\n \"ma13(b5)\": \"ma13(b5)\",\n \"ma13+9+5\": \"ma13(#9#5)\",\n \"ma13(+9+5)\": \"ma13(#9#5)\",\n \"ma7#9#5\": \"ma13(#9#5)\",\n \"maj13(#9#5)\": \"ma13(#9#5)\",\n \"+13+9+5\": \"ma13(#9#5)\",\n \"M13(+9+5)\": \"ma13(#9#5)\",\n \"+13#9#5\": \"ma13(#9#5)\",\n \"+13(#9#5)\": \"ma13(#9#5)\",\n \"maj13+9+5\": \"ma13(#9#5)\",\n \"maj13(+9+5)\": \"ma13(#9#5)\",\n \"maj13#9#5\": \"ma13(#9#5)\",\n \"ma13(#9#5)\": \"ma13(#9#5)\",\n \"ma13+9\": \"ma13(#9)\",\n \"ma13(+9)\": \"ma13(#9)\",\n \"ma13#9\": \"ma13(#9)\",\n \"maj13(#9)\": \"ma13(#9)\",\n \"+13+9\": \"ma13(#9)\",\n \"M13(+9)\": \"ma13(#9)\",\n \"+13#9\": \"ma13(#9)\",\n \"+13(#9)\": \"ma13(#9)\",\n \"maj13+9\": \"ma13(#9)\",\n \"maj13(+9)\": \"ma13(#9)\",\n \"maj13#9\": \"ma13(#9)\",\n \"ma13(#9)\": \"ma13(#9)\",\n \"ma13(+5)\": \"ma13(#5)\",\n \"ma13+5\": \"ma13(#5)\",\n \"ma13#5\": \"ma13(#5)\",\n \"maj13(#5)\": \"ma13(#5)\",\n \"+13(+5)\": \"ma13(#5)\",\n \"M13+5\": \"ma13(#5)\",\n \"+13#5\": \"ma13(#5)\",\n \"+13(#5)\": \"ma13(#5)\",\n \"maj13(+5)\": \"ma13(#5)\",\n \"maj13+5\": \"ma13(#5)\",\n \"maj13#5\": \"ma13(#5)\",\n \"ma13(#5)\": \"ma13(#5)\",\n \"ma13(+11+5)\": \"ma13(#11#5)\",\n \"ma13+11+5\": \"ma13(#11#5)\",\n \"maj13(#11#5)\": \"ma13(#11#5)\",\n \"+13(+11+5)\": \"ma13(#11#5)\",\n \"M13+11+5\": \"ma13(#11#5)\",\n \"+13#11#5\": \"ma13(#11#5)\",\n \"+13(#11#5)\": \"ma13(#11#5)\",\n \"maj13(+11+5)\": \"ma13(#11#5)\",\n \"maj13+11+5\": \"ma13(#11#5)\",\n \"maj13#11#5\": \"ma13(#11#5)\",\n \"ma13(#11#5)\": \"ma13(#11#5)\",\n \"ma13(+11)\": \"ma13(#11)\",\n \"ma13+11\": \"ma13(#11)\",\n \"maj13(#11)\": \"ma13(#11)\",\n \"+13(+11)\": \"ma13(#11)\",\n \"M13+11\": \"ma13(#11)\",\n \"+13#11\": \"ma13(#11)\",\n \"+13(#11)\": \"ma13(#11)\",\n \"maj13(+11)\": \"ma13(#11)\",\n \"maj13+11\": \"ma13(#11)\",\n \"maj13#11\": \"ma13(#11)\",\n \"ma13(#11)\": \"ma13(#11)\",\n \"M13\": \"ma13\",\n \"+13\": \"ma13\",\n \"ma13\": \"ma13\",\n \"13(#7)\": \"ma13\",\n \"ma11-9\": \"ma11(b9)\",\n \"ma11(-9)\": \"ma11(b9)\",\n \"ma11b9\": \"ma11(b9)\",\n \"maj11(b9)\": \"ma11(b9)\",\n \"+11-9\": \"ma11(b9)\",\n \"M11(-9)\": \"ma11(b9)\",\n \"+11b9\": \"ma11(b9)\",\n \"+11(b9)\": \"ma11(b9)\",\n \"maj11-9\": \"ma11(b9)\",\n \"maj11(-9)\": \"ma11(b9)\",\n \"maj11b9\": \"ma11(b9)\",\n \"ma11(b9)\": \"ma11(b9)\",\n \"ma11(-5)\": \"ma11(b5)\",\n \"ma11-5\": \"ma11(b5)\",\n \"ma11b5\": \"ma11(b5)\",\n \"maj11(b5)\": \"ma11(b5)\",\n \"+11(-5)\": \"ma11(b5)\",\n \"M11-5\": \"ma11(b5)\",\n \"+11b5\": \"ma11(b5)\",\n \"+11(b5)\": \"ma11(b5)\",\n \"maj11(-5)\": \"ma11(b5)\",\n \"maj11-5\": \"ma11(b5)\",\n \"maj11b5\": \"ma11(b5)\",\n \"ma11(b5)\": \"ma11(b5)\",\n \"ma11(-13)\": \"ma11(b13)\",\n \"ma11-13\": \"ma11(b13)\",\n \"ma11b13\": \"ma11(b13)\",\n \"maj11(b13)\": \"ma11(b13)\",\n \"+11(-13)\": \"ma11(b13)\",\n \"M11-13\": \"ma11(b13)\",\n \"+11b13\": \"ma11(b13)\",\n \"+11(b13)\": \"ma11(b13)\",\n \"maj11(-13)\": \"ma11(b13)\",\n \"maj11-13\": \"ma11(b13)\",\n \"maj11b13\": \"ma11(b13)\",\n \"ma11(b13)\": \"ma11(b13)\",\n \"ma11(+9)\": \"ma11(#9)\",\n \"ma11+9\": \"ma11(#9)\",\n \"ma11#9\": \"ma11(#9)\",\n \"maj11(#9)\": \"ma11(#9)\",\n \"+11(+9)\": \"ma11(#9)\",\n \"M11+9\": \"ma11(#9)\",\n \"+11#9\": \"ma11(#9)\",\n \"+11(#9)\": \"ma11(#9)\",\n \"maj11(+9)\": \"ma11(#9)\",\n \"maj11+9\": \"ma11(#9)\",\n \"maj11#9\": \"ma11(#9)\",\n \"ma11(#9)\": \"ma11(#9)\",\n \"ma11(+5)\": \"ma11(#5)\",\n \"ma11+5\": \"ma11(#5)\",\n \"ma11#5\": \"ma11(#5)\",\n \"maj11(#5)\": \"ma11(#5)\",\n \"+11(+5)\": \"ma11(#5)\",\n \"M11+5\": \"ma11(#5)\",\n \"+11#5\": \"ma11(#5)\",\n \"+11(#5)\": \"ma11(#5)\",\n \"maj11(+5)\": \"ma11(#5)\",\n \"maj11+5\": \"ma11(#5)\",\n \"maj11#5\": \"ma11(#5)\",\n \"ma11(#5)\": \"ma11(#5)\",\n \"M11\": \"ma11\",\n \"+11\": \"ma11\",\n \"ma11\": \"ma11\",\n \"11(+7)\": \"ma11\",\n \"11+7\": \"ma11\",\n \"11#7\": \"ma11\",\n \"11(#7)\": \"ma11\",\n \"m9M7\": \"m9(ma7)\",\n \"m9(M7)\": \"m9(ma7)\",\n \"m9(+7)\": \"m9(ma7)\",\n \"m9(maj7)\": \"m9(ma7)\",\n \"m9(ma7)\": \"m9(ma7)\",\n \"-9(-5)\": \"m9(b5)\",\n \"-9-5\": \"m11(b5)\",\n \"-9b5\": \"m9(b5)\",\n \"-9(b5)\": \"m9(b5)\",\n \"m9(-5)\": \"m9(b5)\",\n \"m9-5\": \"m9(b5)\",\n \"m9b5\": \"m9(b5)\",\n \"m9(b5)\": \"m9(b5)\",\n \"-9(-13)\": \"m9(b13)\",\n \"-9-13\": \"m9(b13)\",\n \"-9b13\": \"m9(b13)\",\n \"-9(b13)\": \"m9(b13)\",\n \"m9(-13)\": \"m9(b13)\",\n \"m9-13\": \"m9(b13)\",\n \"m9b13\": \"m9(b13)\",\n \"m9(b13)\": \"m9(b13)\",\n \"m9(#7)\": \"m9(#7)\",\n \"-9(+5)\": \"m9(#5)\",\n \"m9+5\": \"m11(#5)\",\n \"-9#5\": \"m9(#5)\",\n \"-9(#5)\": \"m9(#5)\",\n \"m9(+5)\": \"m9(#5)\",\n \"m9#5\": \"m9(#5)\",\n \"m9(#5)\": \"m9(#5)\",\n \"-9(+11)\": \"m9(#11)\",\n \"-9+11\": \"m9(#11)\",\n \"-9#11\": \"m9(#11)\",\n \"-9(#11)\": \"m9(#11)\",\n \"m9(+11)\": \"m9(#11)\",\n \"m9+11\": \"m9(#11)\",\n \"m9#11\": \"m9(#11)\",\n \"m9(#11)\": \"m9(#11)\",\n \"-9\": \"m9\",\n \"min9\": \"m9\",\n \"mi9\": \"m9\",\n \"m9\": \"m9\",\n \"m7sus\": \"m7sus4\",\n \"m7sus4\": \"m7sus4\",\n \"min7(no3)\": \"m7(no3)\",\n \"m7(no3)\": \"m7(no3)\",\n \"-7(-9)\": \"m7(b9)\",\n \"m7-9\": \"m7(b9)\",\n \"-7b9\": \"m7(b9)\",\n \"-7(b9)\": \"m7(b9)\",\n \"m7(-9)\": \"m7(b9)\",\n \"m7b9\": \"m7(b9)\",\n \"m7(b9)\": \"m7(b9)\",\n \"-7(-5)\": \"m7(b5)\",\n \"m7-5\": \"m7(b5)\",\n \"-7b5\": \"m7(b5)\",\n \"-7(b5)\": \"m7(b5)\",\n \"m7(-5)\": \"m7(b5)\",\n \"m7b5\": \"m7(b5)\",\n \"m7(b5)\": \"m7(b5)\",\n \"-7(-13)\": \"m7(b13)\",\n \"-7-13\": \"m7(b13)\",\n \"-7b13\": \"m7(b13)\",\n \"-7(b13)\": \"m7(b13)\",\n \"m7(-13)\": \"m7(b13)\",\n \"m7-13\": \"m7(b13)\",\n \"m7b13\": \"m7(b13)\",\n \"m7(b13)\": \"m7(b13)\",\n \"m7(add6)\": \"m7(6)\",\n \"m7(6)\": \"m7(6)\",\n \"m74\": \"m7(4)\",\n \"m7(4)\": \"m7(4)\",\n \"m7(add11)\": \"m7(4)\",\n \"m7(add4)\": \"m7(4)\",\n \"m7(11)\": \"m7(11)\",\n \"-7(+9)\": \"m7(#9)\",\n \"m7+9\": \"m7(#9)\",\n \"-7#9\": \"m7(#9)\",\n \"-7(#9)\": \"m7(#9)\",\n \"m7(+9)\": \"m7(#9)\",\n \"m7#9\": \"m7(#9)\",\n \"m7(#9)\": \"m7(#9)\",\n \"-7(+5)\": \"m7(#5)\",\n \"m7+5\": \"m7(#5)\",\n \"-7#5\": \"m7(#5)\",\n \"-7(#5)\": \"m7(#5)\",\n \"m7(+5)\": \"m7(#5)\",\n \"m7#5\": \"m7(#5)\",\n \"m7(#5)\": \"m7(#5)\",\n \"-7(+11)\": \"m7(#11)\",\n \"-7+11\": \"m7(#11)\",\n \"-7#11\": \"m7(#11)\",\n \"-7(#11)\": \"m7(#11)\",\n \"m7(+11)\": \"m7(#11)\",\n \"m7+11\": \"m7(#11)\",\n \"m7#11\": \"m7(#11)\",\n \"m7(#11)\": \"m7(#11)\",\n \"-7\": \"m7\",\n \"min7\": \"m7\",\n \"mi7\": \"m7\",\n \"m7\": \"m7\",\n \"m6+7\": \"m6(ma7)\",\n \"m6M7\": \"m6(ma7)\",\n \"m6(+7)\": \"m6(ma7)\",\n \"m6(M7)\": \"m6(ma7)\",\n \"m6(ma7)\": \"m6(ma7)\",\n \"m69\": \"m6(9)\",\n \"m6(add9)\": \"m6(9)\",\n \"m6add9\": \"m6(9)\",\n \"m6(9)\": \"m6(9)\",\n \"m6(#5)\": \"m6(#5)\",\n \"-6\": \"m6\",\n \"min6\": \"m6\",\n \"mi6\": \"m6\",\n \"m6\": \"m6\",\n \"m4\": \"m4\",\n \"madd2\": \"m2\",\n \"m(add2)\": \"m2\",\n \"min2\": \"m2\",\n \"mi2\": \"m2\",\n \"m2\": \"m2\",\n \"-13(-13)\": \"m13(b9)\",\n \"-13-13\": \"m13(b9)\",\n \"-13b13\": \"m13(b9)\",\n \"-13(b13)\": \"m13(b9)\",\n \"m13(-9)\": \"m13(b9)\",\n \"m13-9\": \"m13(b9)\",\n \"m13b9\": \"m13(b9)\",\n \"m13(b9)\": \"m13(b9)\",\n \"-13(-5)\": \"m13(b5)\",\n \"-13-5\": \"m13(b5)\",\n \"-13b5\": \"m13(b5)\",\n \"-13(b5)\": \"m13(b5)\",\n \"m13(-5)\": \"m13(b5)\",\n \"m13-5\": \"m13(b5)\",\n \"m13b5\": \"m13(b5)\",\n \"m13(b5)\": \"m13(b5)\",\n \"-13+9\": \"m13(#9)\",\n \"-13(+9)\": \"m13(#9)\",\n \"-13#9\": \"m13(#9)\",\n \"-13(#9)\": \"m13(#9)\",\n \"m13+9\": \"m13(#9)\",\n \"m13(+9)\": \"m13(#9)\",\n \"m13#9\": \"m13(#9)\",\n \"m13(#9)\": \"m13(#9)\",\n \"-13(+5)\": \"m13(#5)\",\n \"m13+5\": \"m13(#5)\",\n \"-13#5\": \"m13(#5)\",\n \"-13(#5)\": \"m13(#5)\",\n \"m13(+5)\": \"m13(#5)\",\n \"m13#5\": \"m13(#5)\",\n \"m13(#5)\": \"m13(#5)\",\n \"-13(+11)\": \"m13(#11)\",\n \"-13+11\": \"m13(#11)\",\n \"-13#11\": \"m13(#11)\",\n \"-13(#11)\": \"m13(#11)\",\n \"m13(+11)\": \"m13(#11)\",\n \"m13+11\": \"m13(#11)\",\n \"m13#11\": \"m13(#11)\",\n \"m13(#11)\": \"m13(#11)\",\n \"-13\": \"m13\",\n \"min13\": \"m13\",\n \"mi13\": \"m13\",\n \"m13\": \"m13\",\n \"-11-9-13\": \"m11(b9b13)\",\n \"-11(-9-13)\": \"m11(b9b13)\",\n \"-11b9b13\": \"m11(b9b13)\",\n \"-11(b9b13)\": \"m11(b9b13)\",\n \"m11-9-13\": \"m11(b9b13)\",\n \"m11(-9-13)\": \"m11(b9b13)\",\n \"m11b9b13\": \"m11(b9b13)\",\n \"m11(b9b13)\": \"m11(b9b13)\",\n \"-11(+5-9)\": \"m11(b9#5)\",\n \"m9+5-9\": \"m11(b9#5)\",\n \"-11#5b9\": \"m11(b9#5)\",\n \"-11(#5b9)\": \"m11(b9#5)\",\n \"m11(+5-9)\": \"m11(b9#5)\",\n \"m11+5-9\": \"m11(b9#5)\",\n \"m11#5b9\": \"m11(b9#5)\",\n \"m11(#5b9)\": \"m11(b9#5)\",\n \"m11(b9#5)\": \"m11(b9#5)\",\n \"-11-9\": \"m11(b9)\",\n \"-11(-9)\": \"m11(b9)\",\n \"-11b9\": \"m11(b9)\",\n \"-11(b9)\": \"m11(b9)\",\n \"m11-9\": \"m11(b9)\",\n \"m11(-9)\": \"m11(b9)\",\n \"m11b9\": \"m11(b9)\",\n \"m11(b9)\": \"m11(b9)\",\n \"-11(-5-9)\": \"m11(b5b9)\",\n \"-11-5-9\": \"m11(b5b9)\",\n \"-11b5b9\": \"m11(b5b9)\",\n \"-11(b5b9)\": \"m11(b5b9)\",\n \"m11(-5-9)\": \"m11(b5b9)\",\n \"m11-5-9\": \"m11(b5b9)\",\n \"m11b5b9\": \"m11(b5b9)\",\n \"m11(b5b9)\": \"m11(b5b9)\",\n \"-11-5-13\": \"m11(b5b13)\",\n \"-11(-5-13)\": \"m11(b5b13)\",\n \"-11b5b13\": \"m11(b5b13)\",\n \"-11(b5b13)\": \"m11(b5b13)\",\n \"m11-5-13\": \"m11(b5b13)\",\n \"m11(-5-13)\": \"m11(b5b13)\",\n \"m11b5b13\": \"m11(b5b13)\",\n \"m11(b5b13)\": \"m11(b5b13)\",\n \"-11(-5+9)\": \"m11(b5#9)\",\n \"-11-5+9\": \"m11(b5#9)\",\n \"-11b5#9\": \"m11(b5#9)\",\n \"-11(b5#9)\": \"m11(b5#9)\",\n \"m11(-5+9)\": \"m11(b5#9)\",\n \"m11-5+9\": \"m11(b5#9)\",\n \"m11b5#9\": \"m11(b5#9)\",\n \"m11(b5#9)\": \"m11(b5#9)\",\n \"-11(-5)\": \"m11(b5)\",\n \"-11b5\": \"m11(b5)\",\n \"-11(b5)\": \"m11(b5)\",\n \"m11(-5)\": \"m11(b5)\",\n \"m11-5\": \"m11(b5)\",\n \"m11b5\": \"m11(b5)\",\n \"m11(b5)\": \"m11(b5)\",\n \"-11(+5-13)\": \"m11(b13#5)\",\n \"-11+5-13\": \"m11(b13#5)\",\n \"-11#5b13\": \"m11(b13#5)\",\n \"-11(#5b13)\": \"m11(b13#5)\",\n \"m11(+5-13)\": \"m11(b13#5)\",\n \"m11+5-13\": \"m11(b13#5)\",\n \"m11#5b13\": \"m11(b13#5)\",\n \"m11(#5b13)\": \"m11(b13#5)\",\n \"m11(b13#5)\": \"m11(b13#5)\",\n \"-11(-13)\": \"m11(b13)\",\n \"-11-13\": \"m11(b13)\",\n \"-11b13\": \"m11(b13)\",\n \"-11(b13)\": \"m11(b13)\",\n \"m11(-13)\": \"m11(b13)\",\n \"m11-13\": \"m11(b13)\",\n \"m11b13\": \"m11(b13)\",\n \"m11(b13)\": \"m11(b13)\",\n \"-11(+9-13)\": \"m11(#9b13)\",\n \"-11+9-13\": \"m11(#9b13)\",\n \"-11#9b13\": \"m11(#9b13)\",\n \"-11(#9b13)\": \"m11(#9b13)\",\n \"m11(+9-13)\": \"m11(#9b13)\",\n \"m11+9-13\": \"m11(#9b13)\",\n \"m11#9b13\": \"m11(#9b13)\",\n \"m11(#9b13)\": \"m11(#9b13)\",\n \"-11(+5+9)\": \"m11(#9#5)\",\n \"m9+5+9\": \"m11(#9#5)\",\n \"-11#5#9\": \"m11(#9#5)\",\n \"-11(#5#9)\": \"m11(#9#5)\",\n \"m11(+5+9)\": \"m11(#9#5)\",\n \"m11+5+9\": \"m11(#9#5)\",\n \"m11#5#9\": \"m11(#9#5)\",\n \"m11(#5#9)\": \"m11(#9#5)\",\n \"m11(#9#5)\": \"m11(#9#5)\",\n \"-11(+9)\": \"m11(#9)\",\n \"-11+9\": \"m11(#9)\",\n \"-11#9\": \"m11(#9)\",\n \"-11(#9)\": \"m11(#9)\",\n \"m11(+9)\": \"m11(#9)\",\n \"m11+9\": \"m11(#9)\",\n \"m11#9\": \"m11(#9)\",\n \"m11(#9)\": \"m11(#9)\",\n \"-11(+5)\": \"m11(#5)\",\n \"-11#5\": \"m11(#5)\",\n \"-11(#5)\": \"m11(#5)\",\n \"m11(+5)\": \"m11(#5)\",\n \"m11+5\": \"m11(#5)\",\n \"m11#5\": \"m11(#5)\",\n \"m11(#5)\": \"m11(#5)\",\n \"-11\": \"m11\",\n \"min11\": \"m11\",\n \"mi11\": \"m11\",\n \"m11\": \"m11\",\n \"m(no5)\": \"m(no5)\",\n \"m+9\": \"m(ma9)\",\n \"m(+9)\": \"m(ma9)\",\n \"m(maj9)\": \"m(ma9)\",\n \"min(maj9)\": \"m(ma9)\",\n \"mi(maj9)\": \"m(ma9)\",\n \"m(M9)\": \"m(ma9)\",\n \"m(ma9)\": \"m(ma9)\",\n \"m+7\": \"m(ma7)\",\n \"m(+7)\": \"m(ma7)\",\n \"m(maj7)\": \"m(ma7)\",\n \"min(maj7)\": \"m(ma7)\",\n \"mi(maj7)\": \"m(ma7)\",\n \"m(M7)\": \"m(ma7)\",\n \"m(ma7)\": \"m(ma7)\",\n \"m(add9)\": \"m(9)\",\n \"m(9)\": \"m(9)\",\n \"m(add4)\": \"m(4)\",\n \"m(4)\": \"m(4)\",\n \"m(add11)\": \"m(11)\",\n \"m(11)\": \"m(11)\",\n \"-\": \"m\",\n \"minor\": \"m\",\n \"min\": \"m\",\n \"mi\": \"m\",\n \"m\": \"m\",\n \"dim 7th\": \"dim7\",\n \"dim 7\": \"dim7\",\n \"o7\": \"dim7\",\n \"dim7\": \"dim7\",\n \"-b5\": \"dim\",\n \"-(b5)\": \"dim\",\n \"m(-5)\": \"dim\",\n \"m-5\": \"dim\",\n \"mb5\": \"dim\",\n \"m(b5)\": \"dim\",\n \"dim\": \"dim\",\n \"b9sus\": \"b9sus\",\n \"b69sus\": \"b69sus\",\n \"b69(#11)\": \"b69(#11)\",\n \"m9sus\": \"9sus4\",\n \"m9sus4\": \"9sus4\",\n \"9sus\": \"9sus4\",\n \"9sus4\": \"9sus4\",\n \"9aug\": \"9aug\",\n \"9(-5)\": \"9(b5)\",\n \"9-5\": \"9(b5)\",\n \"9b5\": \"9(b5)\",\n \"9(b5)\": \"9(b5)\",\n \"9(-13)\": \"9(b13)\",\n \"9-13\": \"9(b13)\",\n \"9b13\": \"9(b13)\",\n \"9(b13)\": \"9(b13)\",\n \"x9\": \"9(#5)\",\n \"aug9\": \"9(#5)\",\n \"9(+5)\": \"9(#5)\",\n \"9+5\": \"9(#5)\",\n \"9#5\": \"9(#5)\",\n \"9(#5)\": \"9(#5)\",\n \"9(+11)\": \"9(#11)\",\n \"9+11\": \"9(#11)\",\n \"9#11\": \"9(#11)\",\n \"9(#11)\": \"9(#11)\",\n \"dom 9\": \"9\",\n \"dom9\": \"9\",\n \"7sus\": \"7sus4\",\n \"7sus4\": \"7sus4\",\n \"7sus(b9)\": \"7sus(b9)\",\n \"7sus(6)\": \"7sus(6)\",\n \"7b9sus4\": \"7b9sus4\",\n \"7aug5\": \"7aug5\",\n \"7(no3)\": \"7(no3)\",\n \"7(b9b5)\": \"7(b9b5)\",\n \"7(-13-9)\": \"7(b9b13)\",\n \"7-13-9\": \"7(b9b13)\",\n \"7b13b9\": \"7(b9b13)\",\n \"7(b13b9)\": \"7(b9b13)\",\n \"7(-9-13)\": \"7(b9b13)\",\n \"7-9-13\": \"7(b9b13)\",\n \"7b9b13\": \"7(b9b13)\",\n \"7(b9b13)\": \"7(b9b13)\",\n \"7(+5-9)\": \"7(b9#5)\",\n \"7+5-9\": \"7(b9#5)\",\n \"7#5b9\": \"7(b9#5)\",\n \"7(#5b9)\": \"7(b9#5)\",\n \"7(b9#5)\": \"7(b9#5)\",\n \"7(-9)\": \"7(b9)\",\n \"7-9\": \"7(b9)\",\n \"7b9\": \"7(b9)\",\n \"7(b9)\": \"7(b9)\",\n \"7(-5-9)\": \"7(b5b9)\",\n \"7-5-9\": \"7(b5b9)\",\n \"7b5b9\": \"7(b5b9)\",\n \"7(b5b9)\": \"7(b5b9)\",\n \"7(-5+9)\": \"7(b5#9)\",\n \"7-5+9\": \"7(b5#9)\",\n \"7b5#9\": \"7(b5#9)\",\n \"7(b5#9)\": \"7(b5#9)\",\n \"7(-5+11)\": \"7(b5#11)\",\n \"7-5+11\": \"7(b5#11)\",\n \"7b5#11\": \"7(b5#11)\",\n \"7(b5#11)\": \"7(b5#11)\",\n \"7(-5)\": \"7(b5)\",\n \"7-5\": \"7(b5)\",\n \"7b5\": \"7(b5)\",\n \"7(b5)\": \"7(b5)\",\n \"7(-13)\": \"7(b13)\",\n \"7-13\": \"7(b13)\",\n \"7b13\": \"7(b13)\",\n \"7(b13)\": \"7(b13)\",\n \"7(6)\": \"7(6)\",\n \"7(#9b5)\": \"7(#9b5)\",\n \"7(-13+9)\": \"7(#9b13)\",\n \"7-13+9\": \"7(#9b13)\",\n \"7b13#9\": \"7(#9b13)\",\n \"7(b13#9)\": \"7(#9b13)\",\n \"7+9-13\": \"7(#9b13)\",\n \"7(+9-13)\": \"7(#9b13)\",\n \"7#9b13\": \"7(#9b13)\",\n \"7(#9b13)\": \"7(#9b13)\",\n \"7(+5+9)\": \"7(#9#5)\",\n \"7+5+9\": \"7(#9#5)\",\n \"7#5#9\": \"7(#9#5)\",\n \"7(#5#9)\": \"7(#9#5)\",\n \"7(#9#5)\": \"7(#9#5)\",\n \"7(+9)\": \"7(#9)\",\n \"7+9\": \"7(#9)\",\n \"7#9\": \"7(#9)\",\n \"7(#9)\": \"7(#9)\",\n \"7(+5+11)\": \"7(#5#11)\",\n \"7+5+11\": \"7(#5#11)\",\n \"7#5#11\": \"7(#5#11)\",\n \"7(#5#11)\": \"7(#5#11)\",\n \"aug 7th\": \"7(#5)\",\n \"aug 7\": \"7(#5)\",\n \"x7\": \"7(#5)\",\n \"7(+5)\": \"7(#5)\",\n \"7+5\": \"7(#5)\",\n \"7#5\": \"7(#5)\",\n \"aug7\": \"7(#5)\",\n \"7(#5)\": \"7(#5)\",\n \"7(+11)\": \"7(#11)\",\n \"7+11\": \"7(#11)\",\n \"7#11\": \"7(#11)\",\n \"7(#11)\": \"7(#11)\",\n \"dom 7th\": \"7\",\n \"dom 7\": \"7\",\n \"dom7\": \"7\",\n \"6(add9)\": \"6(9)\",\n \"6(9)\": \"6(9)\",\n \"6(no3)\": \"6(no3)\",\n \"6(b9)\": \"6(b9)\",\n \"6(2)\": \"6(2)\",\n \"5(no3)\": \"5\",\n \"(no 3rd)\": \"5\",\n \"(no 3)\": \"5\",\n \"(no3)\": \"5\",\n \"no3\": \"5\",\n \"sus42\": \"4(2)\",\n \"4(2)\": \"4(2)\",\n \"2(no3)\": \"2(no3)\",\n \"2(ma7)\": \"2(ma7)\",\n \"sus2(4)\": \"2(4)\",\n \"2(4)\": \"2(4)\",\n \"2(+7)\": \"2(+7)\",\n \"2(#4)(#42)(2#4)\": \"2(#4)(#42)(2#4)\",\n \"(#4)2\": \"2(#4)\",\n \"2(#4)\": \"2(#4)\",\n \"2(+4)\": \"2(#4)\",\n \"2#4\": \"2(#4)\",\n \"2+4\": \"2(#4)\",\n \"2(#11)\": \"2(#11)\",\n \"add9(no3)\": \"2\",\n \"sus2\": \"2\",\n \"m13sus\": \"13sus4\",\n \"m13sus4\": \"13sus4\",\n \"13sus\": \"13sus4\",\n \"13sus4\": \"13sus4\",\n \"13(-9-5)\": \"13(b9b5)\",\n \"13-9-5\": \"13(b9b5)\",\n \"13b9b5\": \"13(b9b5)\",\n \"13(b9b5)\": \"13(b9b5)\",\n \"13(-9+5)\": \"13(b9#5)\",\n \"13-9+5\": \"13(b9#5)\",\n \"13b9#5\": \"13(b9#5)\",\n \"13(b9#5)\": \"13(b9#5)\",\n \"13(-9)\": \"13(b9)\",\n \"13-9\": \"13(b9)\",\n \"13b9\": \"13(b9)\",\n \"13(b9)\": \"13(b9)\",\n \"13(-5)\": \"13(b5)\",\n \"13-5\": \"13(b5)\",\n \"13b5\": \"13(b5)\",\n \"13(b5)\": \"13(b5)\",\n \"13(add4)\": \"13(add4)\",\n \"13+9-5\": \"13(#9b5)\",\n \"13(+9-5)\": \"13(#9b5)\",\n \"13#9b5\": \"13(#9b5)\",\n \"13(#9b5)\": \"13(#9b5)\",\n \"13+9+5\": \"13(#9#5)\",\n \"13(+9+5)\": \"13(#9#5)\",\n \"13#9#5\": \"13(#9#5)\",\n \"13(#9#5)\": \"13(#9#5)\",\n \"13+9\": \"13(#9)\",\n \"13(+9)\": \"13(#9)\",\n \"13#9\": \"13(#9)\",\n \"13(#9)\": \"13(#9)\",\n \"13(+5)\": \"13(#5)\",\n \"13+5\": \"13(#5)\",\n \"13#5\": \"13(#5)\",\n \"13(#5)\": \"13(#5)\",\n \"13(+11)\": \"13(#11)\",\n \"13+11\": \"13(#11)\",\n \"13#11\": \"13(#11)\",\n \"13(#11)\": \"13(#11)\",\n \"dom 13\": \"13\",\n \"dom13\": \"13\",\n \"m11sus\": \"11sus4\",\n \"m11sus4\": \"11sus4\",\n \"11sus\": \"11sus4\",\n \"11sus4\": \"11sus4\",\n \"11(-9)\": \"11(b9)\",\n \"11-9\": \"11(b9)\",\n \"11b9\": \"11(b9)\",\n \"11(b9)\": \"11(b9)\",\n \"11(-5)\": \"11(b5)\",\n \"11-5\": \"11(b5)\",\n \"11b5\": \"11(b5)\",\n \"11(b5)\": \"11(b5)\",\n \"11(-13)\": \"11(b13)\",\n \"11-13\": \"11(b13)\",\n \"11b13\": \"11(b13)\",\n \"11(b13)\": \"11(b13)\",\n \"11(+9)\": \"11(#9)\",\n \"11+9\": \"11(#9)\",\n \"11#9\": \"11(#9)\",\n \"11(#9)\": \"11(#9)\",\n \"11(+5)\": \"11(#5)\",\n \"11+5\": \"11(#5)\",\n \"11#5\": \"11(#5)\",\n \"11(#5)\": \"11(#5)\",\n \"dom 11\": \"11\",\n \"dom11\": \"11\",\n \"x\": \"+\",\n \"(+5)\": \"+\",\n \"+5\": \"+\",\n \"#5\": \"+\",\n \"(#5)\": \"+\",\n \"aug\": \"+\",\n \"+\": \"+\",\n \"Majj\": \"[blank]\",\n \"Ma\": \"[blank]\",\n \"ma\": \"[blank]\",\n \"M\": \"[blank]\",\n \"major\": \"[blank]\",\n \"maj\": \"[blank]\",\n \"[blank]\": \"[blank]\",\n \"unis\": \"(unis)\",\n \"(unis)\": \"(unis)\",\n \"(b6)\": \"(b6)\",\n \"2(6)\": \"2(6)\",\n \"b5\": \"(b5)\",\n \"(-5)\": \"(b5)\",\n \"-5\": \"(b5)\",\n \"(b5)\": \"(b5)\",\n \"(add9)\": \"(9)\",\n \"add9\": \"(9)\",\n \"(9)\": \"(9)\",\n \"(7)\": \"(7)\",\n \"(add6)\": \"(6)\",\n \"add6\": \"(6)\",\n \"(6)\": \"(6)\",\n \"sus(4)\": \"(4)\",\n \"(add4)\": \"(4)\",\n \"add4\": \"(4)\",\n \"(4)\": \"(4)\",\n \"(add2)\": \"(2)\",\n \"add2\": \"(2)\",\n \"(2)\": \"(2)\",\n \"(add13)\": \"(13)\",\n \"add13\": \"(13)\",\n \"(13)\": \"(13)\",\n \"(add11)\": \"(11)\",\n \"add11\": \"(11)\",\n \"(11)\": \"(11)\",\n \"(+4)\": \"(#4)\",\n \"+4\": \"(#4)\",\n \"#4\": \"(#4)\",\n \"(#4)\": \"(#4)\"\n};\n\nexport default mapping;","/**\n * Album meta directive. See https://www.chordpro.org/chordpro/directives-album/\n * @type {string}\n */\nimport AstComponent from './ast_component';\nimport TraceInfo from './trace_info';\n\nexport const ALBUM = 'album';\n\n/**\n * Artist meta directive. See https://www.chordpro.org/chordpro/directives-artist/\n * @type {string}\n */\nexport const ARTIST = 'artist';\n\n/**\n * Capo meta directive. See https://www.chordpro.org/chordpro/directives-capo/\n * @type {string}\n */\nexport const CAPO = 'capo';\n\n/**\n * Comment directive. See https://www.chordpro.org/chordpro/directives-comment/\n * @type {string}\n */\nexport const COMMENT = 'comment';\n\n/**\n * Composer meta directive. See https://www.chordpro.org/chordpro/directives-composer/\n * @type {string}\n */\nexport const COMPOSER = 'composer';\n\n/**\n * Copyright meta directive. See https://www.chordpro.org/chordpro/directives-copyright/\n * @type {string}\n */\nexport const COPYRIGHT = 'copyright';\n\n/**\n * Duration meta directive. See https://www.chordpro.org/chordpro/directives-duration/\n * @type {string}\n */\nexport const DURATION = 'duration';\n\n/**\n * End of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/\n * @type {string}\n */\nexport const END_OF_CHORUS = 'end_of_chorus';\n\n/**\n * End of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/\n * @type {string}\n */\nexport const END_OF_TAB = 'end_of_tab';\n\n/**\n * End of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/\n * @type {string}\n */\nexport const END_OF_VERSE = 'end_of_verse';\n\n/**\n * Key meta directive. See https://www.chordpro.org/chordpro/directives-key/\n * @type {string}\n */\nexport const KEY = 'key';\n\n/**\n * _Key meta directive. Reflects the key as transposed by the capo value\n * See https://www.chordpro.org/chordpro/directives-key/\n * @type {string}\n */\nexport const _KEY = '_key';\n\n/**\n * Lyricist meta directive. See https://www.chordpro.org/chordpro/directives-lyricist/\n * @type {string}\n */\nexport const LYRICIST = 'lyricist';\n\n/**\n * Start of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/\n * @type {string}\n */\nexport const START_OF_CHORUS = 'start_of_chorus';\n\n/**\n * Start of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/\n * @type {string}\n */\nexport const START_OF_TAB = 'start_of_tab';\n\n/**\n * Start of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/\n * @type {string}\n */\nexport const START_OF_VERSE = 'start_of_verse';\n\n/**\n * Subtitle meta directive. See https://www.chordpro.org/chordpro/directives-subtitle/\n * @type {string}\n */\nexport const SUBTITLE = 'subtitle';\n\n/**\n * Tempo meta directive. See https://www.chordpro.org/chordpro/directives-tempo/\n * @type {string}\n */\nexport const TEMPO = 'tempo';\n\n/**\n * Time meta directive. See https://www.chordpro.org/chordpro/directives-time/\n * @type {string}\n */\nexport const TIME = 'time';\n\n/**\n * Title meta directive. See https://www.chordpro.org/chordpro/directives-title/\n * @type {string}\n */\nexport const TITLE = 'title';\n\n/**\n * Transpose meta directive. See: https://www.chordpro.org/chordpro/directives-transpose/\n * @type {string}\n */\nexport const TRANSPOSE = 'transpose';\n/**\n * New Key meta directive. See: https://github.com/PraiseCharts/ChordChartJS/issues/53\n * @type {string}\n */\nexport const NEW_KEY = 'new_key';\n\n/**\n * Year meta directive. See https://www.chordpro.org/chordpro/directives-year/\n * @type {string}\n */\nexport const YEAR = 'year';\n\nconst TITLE_SHORT = 't';\nconst SUBTITLE_SHORT = 'st';\nconst COMMENT_SHORT = 'c';\nconst START_OF_CHORUS_SHORT = 'soc';\nconst END_OF_CHORUS_SHORT = 'eoc';\nconst START_OF_TAB_SHORT = 'sot';\nconst END_OF_TAB_SHORT = 'eot';\nconst NEW_KEY_SHORT = 'nk';\n\nconst RENDERABLE_TAGS = [COMMENT];\n\nexport const META_TAGS = [\n ALBUM,\n ARTIST,\n CAPO,\n COMPOSER,\n COPYRIGHT,\n DURATION,\n KEY,\n LYRICIST,\n TEMPO,\n TIME,\n TITLE,\n SUBTITLE,\n YEAR,\n];\n\nexport const READ_ONLY_TAGS = [_KEY];\n\nconst ALIASES = {\n [TITLE_SHORT]: TITLE,\n [SUBTITLE_SHORT]: SUBTITLE,\n [COMMENT_SHORT]: COMMENT,\n [START_OF_CHORUS_SHORT]: START_OF_CHORUS,\n [END_OF_CHORUS_SHORT]: END_OF_CHORUS,\n [START_OF_TAB_SHORT]: START_OF_TAB,\n [END_OF_TAB_SHORT]: END_OF_TAB,\n [NEW_KEY_SHORT]: NEW_KEY,\n};\n\nconst META_TAG_REGEX = /^meta:\\s*([^:\\s]+)(\\s*(.+))?$/;\nconst TAG_REGEX = /^([^:\\s]+)(:?\\s*(.+))?$/;\nconst CUSTOM_META_TAG_NAME_REGEX = /^x_(.+)$/;\n\nexport function isReadonlyTag(tagName) {\n return READ_ONLY_TAGS.includes(tagName);\n}\n\nconst translateTagNameAlias = (name) => {\n if (!name) {\n return name;\n }\n\n const sanitizedName = name.trim();\n\n if (sanitizedName in ALIASES) {\n return ALIASES[sanitizedName];\n }\n\n return sanitizedName;\n};\n\n/**\n * Represents a tag/directive. See https://www.chordpro.org/chordpro/chordpro-directives/\n */\nclass Tag extends AstComponent {\n _originalName: string;\n\n _name: string;\n\n _value?: string;\n\n constructor(name, value = '', traceInfo: TraceInfo = null) {\n super(traceInfo);\n this.name = name;\n this.value = value || '';\n }\n\n static parse(tag) {\n if (tag instanceof Tag) {\n return tag;\n }\n\n return this.parseWithRegex(tag, META_TAG_REGEX) || this.parseWithRegex(tag, TAG_REGEX);\n }\n\n static parseWithRegex(tag, regex) {\n const matches = tag.match(regex);\n\n if (matches !== null) {\n return new Tag(matches[1], matches[3] || null);\n }\n\n return null;\n }\n\n set name(name) {\n this._name = translateTagNameAlias(name);\n this._originalName = name;\n }\n\n /**\n * The tag full name. When the original tag used the short name, `name` will return the full name.\n * @member\n * @type {string}\n */\n get name() {\n return this._name.trim();\n }\n\n /**\n * The original tag name that was used to construct the tag.\n * @member\n * @type {string}\n */\n get originalName() {\n return this._originalName.trim();\n }\n\n set value(value) {\n this._value = value;\n }\n\n /**\n * The tag value\n * @member\n * @type {string|null}\n */\n get value() {\n if (this._value) {\n return `${this._value}`.trim();\n }\n\n return this._value || null;\n }\n\n /**\n * Checks whether the tag value is a non-empty string.\n * @returns {boolean}\n */\n hasValue() {\n return this.value !== null && this.value.trim().length > 0;\n }\n\n /**\n * Checks whether the tag is usually rendered inline. It currently only applies to comment tags.\n * @returns {boolean}\n */\n isRenderable() {\n return RENDERABLE_TAGS.indexOf(this.name) !== -1;\n }\n\n /**\n * Checks whether the tag is either a standard meta tag or a custom meta directive (`{x_some_name}`)\n * @returns {boolean}\n */\n isMetaTag() {\n return CUSTOM_META_TAG_NAME_REGEX.test(this.name) || META_TAGS.indexOf(this.name) !== -1;\n }\n\n /**\n * Returns a clone of the tag.\n * @returns {Tag} The cloned tag\n */\n clone() {\n return new Tag(this._originalName, this.value);\n }\n\n toString() {\n return `Tag(name=${this.name}, value=${this.name})`;\n }\n\n set({ value }) {\n return new Tag(this._originalName, value);\n }\n\n setValue(value: string) {\n return this.set({ value });\n }\n}\n\nexport default Tag;\n","import TraceInfo from './trace_info';\n\nabstract class AstComponent {\n line?: number = null;\n\n column?: number = null;\n\n offset?: number = null;\n\n protected constructor(traceInfo: TraceInfo = null) {\n if (traceInfo) {\n this.line = traceInfo.line;\n this.column = traceInfo.column;\n this.offset = traceInfo.offset;\n }\n }\n\n abstract clone(): any;\n}\n\nexport default AstComponent;\n","/**\n * Represents a comment. See https://www.chordpro.org/chordpro/chordpro-file-format-specification/#overview\n */\nclass Comment {\n content: string;\n\n constructor(content) {\n this.content = content;\n }\n\n /**\n * Indicates whether a Comment should be visible in a formatted chord sheet (except for ChordPro sheets)\n * @returns {boolean}\n */\n isRenderable() {\n return false;\n }\n\n /**\n * Returns a deep copy of the Comment, useful when programmatically transforming a song\n * @returns {Comment}\n */\n clone() {\n return new Comment(this.content);\n }\n\n toString() {\n return `Comment(content=${this.content})`;\n }\n}\n\nexport default Comment;\n","import { INDETERMINATE } from '../constants';\nimport Line from './line';\n\n/**\n * Represents a paragraph of lines in a chord sheet\n */\nclass Paragraph {\n /**\n * The {@link Line} items of which the paragraph consists\n * @member\n * @type {Line[]}\n */\n lines: Line[] = [];\n\n addLine(line) {\n this.lines.push(line);\n }\n\n /**\n * Tries to determine the common type for all lines. If the types for all lines are equal, it returns that type.\n * If not, it returns {@link INDETERMINATE}\n * @returns {string}\n */\n get type(): 'verse' | 'chorus' | 'none' | 'indeterminate' {\n const types = this.lines.map((line) => line.type);\n const uniqueTypes = [...new Set(types)];\n\n if (uniqueTypes.length === 1) {\n return uniqueTypes[0];\n }\n\n return INDETERMINATE;\n }\n\n /**\n * Indicates whether the paragraph contains lines with renderable items.\n * @see {@link Line.hasRenderableItems}\n * @returns {boolean}\n */\n hasRenderableItems() {\n return this.lines.some((line) => line.hasRenderableItems());\n }\n}\n\nexport default Paragraph;\n","import Chord from '../chord';\nimport MetadataAccessors from './metadata_accessors';\n\nimport {\n _KEY,\n CAPO,\n KEY,\n isReadonlyTag,\n} from './tag';\n\nfunction appendValue(array, key, value) {\n if (!array.includes(value)) {\n array.push(value);\n }\n}\n\n/**\n * Stores song metadata. Properties can be accessed using the get() method:\n *\n * const metadata = new Metadata({ author: 'John' });\n * metadata.get('author') // => 'John'\n *\n * See {@link Metadata#get}\n */\nclass Metadata extends MetadataAccessors {\n metadata: Record<string, string | string[]> = {};\n\n constructor(metadata = null) {\n super();\n\n Object\n .keys(metadata || {})\n .filter((key) => !isReadonlyTag(key))\n .forEach((key) => {\n const value = metadata[key];\n\n if (value instanceof Array) {\n this.metadata[key] = [...value];\n } else {\n this.metadata[key] = value;\n }\n });\n }\n\n contains(key) {\n return key in this.metadata;\n }\n\n add(key, value) {\n if (isReadonlyTag(key)) {\n return;\n }\n\n if (!(key in this.metadata)) {\n this.metadata[key] = value;\n return;\n }\n\n const currentValue = this.metadata[key];\n\n if (currentValue === value) {\n return;\n }\n\n if (currentValue instanceof Array) {\n appendValue(currentValue, key, value);\n return;\n }\n\n this.metadata[key] = [currentValue, value];\n }\n\n set(key, value) {\n if (value) {\n this.metadata[key] = value;\n } else {\n delete this.metadata[key];\n }\n }\n\n getMetadata(name: string): string | string[] {\n return this.get(name);\n }\n\n /**\n * Reads a metadata value by key. This method supports simple value lookup, as fetching single array values.\n *\n * This method deprecates direct property access, eg: metadata['author']\n *\n * Examples:\n *\n * const metadata = new Metadata({ lyricist: 'Pete', author: ['John', 'Mary'] });\n * metadata.get('lyricist') // => 'Pete'\n * metadata.get('author') // => ['John', 'Mary']\n * metadata.get('author.1') // => 'John'\n * metadata.get('author.2') // => 'Mary'\n *\n * Using a negative index will start counting at the end of the list:\n *\n * const metadata = new Metadata({ lyricist: 'Pete', author: ['John', 'Mary'] });\n * metadata.get('author.-1') // => 'Mary'\n * metadata.get('author.-2') // => 'John'\n *\n * @param prop the property name\n * @returns {Array<String>|String} the metadata value(s). If there is only one value, it will return a String,\n * else it returns an array of strings.\n */\n get(prop) {\n if (prop === _KEY) {\n return this.calculateKeyFromCapo();\n }\n\n if (prop in this.metadata) {\n return this.metadata[prop];\n }\n\n return this.getArrayItem(prop);\n }\n\n /**\n * Returns a single metadata value. If the actual value is an array, it returns the first value. Else, it returns\n * the value.\n * @ignore\n * @param {string} prop the property name\n * @returns {String} The metadata value\n */\n getSingle(prop) {\n const value = this.get(prop);\n\n if (Array.isArray(value)) {\n return value[0];\n }\n\n return value;\n }\n\n parseArrayKey(prop) {\n const match = prop.match(/(.+)\\.(-?\\d+)$/);\n\n if (!match) {\n return [];\n }\n\n const key = match[1];\n const index = parseInt(match[2], 10);\n return [key, index];\n }\n\n getArrayItem(prop) {\n const [key, index] = this.parseArrayKey(prop);\n\n if (!(key && index)) {\n return undefined;\n }\n\n const arrayValue = (this.metadata[key] || []);\n let itemIndex = index;\n\n if (itemIndex < 0) {\n itemIndex = arrayValue.length + itemIndex;\n } else if (itemIndex > 0) {\n itemIndex -= 1;\n }\n\n return arrayValue[itemIndex];\n }\n\n /**\n * Returns a deep clone of this Metadata object\n * @returns {Metadata} the cloned Metadata object\n */\n clone() {\n return new Metadata(this.metadata);\n }\n\n calculateKeyFromCapo() {\n const capo = this.getSingle(CAPO);\n const key = this.getSingle(KEY);\n\n if (capo && key) {\n return Chord.parse(key).transpose(parseInt(capo, 10)).toString();\n }\n\n return undefined;\n }\n}\n\nexport default Metadata;\n","import {\n ALBUM,\n ARTIST,\n CAPO,\n COMPOSER,\n COPYRIGHT,\n DURATION,\n KEY,\n LYRICIST,\n SUBTITLE,\n TEMPO,\n TIME,\n TITLE,\n YEAR,\n} from './tag';\n\nabstract class MetadataAccessors {\n abstract getMetadata(_name: string): string | string[];\n\n get key() { return this.getMetadata(KEY); }\n\n get title() { return this.getMetadata(TITLE); }\n\n get subtitle() { return this.getMetadata(SUBTITLE); }\n\n get capo() { return this.getMetadata(CAPO); }\n\n get duration() { return this.getMetadata(DURATION); }\n\n get tempo() { return this.getMetadata(TEMPO); }\n\n get time() { return this.getMetadata(TIME); }\n\n get year() { return this.getMetadata(YEAR); }\n\n get album() { return this.getMetadata(ALBUM); }\n\n get copyright() { return this.getMetadata(COPYRIGHT); }\n\n get lyricist() { return this.getMetadata(LYRICIST); }\n\n get artist() { return this.getMetadata(ARTIST); }\n\n get composer() { return this.getMetadata(COMPOSER); }\n}\n\nexport default MetadataAccessors;\n","/**\n * Represents a parser warning, currently only used by ChordProParser.\n */\nclass ParserWarning {\n /**\n * The warning message\n * @member\n * @type {string}\n */\n message: string;\n\n /**\n * The chord sheet line number on which the warning occurred\n * @member\n * @type {number}\n */\n lineNumber: number;\n\n /**\n * The chord sheet column on which the warning occurred\n * @member\n * @type {number}\n */\n column: number;\n\n /**\n * @hideconstructor\n */\n constructor(message: string, lineNumber: number, column: number) {\n this.message = message;\n this.lineNumber = lineNumber;\n this.column = column;\n }\n\n /**\n * Returns a stringified version of the warning\n * @returns {string} The string warning\n */\n toString() {\n return `Warning: ${this.message} on line ${this.lineNumber} column ${this.column}`;\n }\n}\n\nexport default ParserWarning;\n","import EvaluationError from './evaluation_error';\nimport { isPresent, presence } from '../../utilities';\nimport Composite from './composite';\nimport AstComponent from '../ast_component';\n\nclass Ternary extends AstComponent {\n variable?: string;\n\n valueTest?: string;\n\n trueExpression: AstComponent[] = [];\n\n falseExpression: AstComponent[] = [];\n\n constructor(\n {\n variable = null,\n valueTest = null,\n trueExpression = null,\n falseExpression = null,\n line = null,\n column = null,\n offset = null,\n } = {},\n ) {\n super({ line, column, offset });\n this.variable = presence(variable);\n this.valueTest = valueTest;\n this.trueExpression = trueExpression;\n this.falseExpression = falseExpression;\n }\n\n /**\n * Evaluate the meta expression\n * @param {Metadata} metadata The metadata object to use for evaluating the expression\n * @param {string} [metadataSeparator=null] The metadata separator to use if necessary\n * @returns {string} The evaluated expression\n */\n evaluate(metadata, metadataSeparator = null, upperContext = null) {\n if (this.variable) {\n return this.evaluateWithVariable(metadata, metadataSeparator);\n }\n\n if (!upperContext) {\n throw new EvaluationError('Unexpected empty expression', this.line, this.column, this.offset);\n }\n\n return this.evaluateToString(metadata.get(upperContext), metadataSeparator);\n }\n\n evaluateToString(value, metadataSeparator) {\n if (Array.isArray(value)) {\n return value.join(metadataSeparator);\n }\n\n return value;\n }\n\n evaluateWithVariable(metadata, metadataSeparator) {\n const value = metadata.get(this.variable);\n\n if (isPresent(value) && (!this.valueTest || value === this.valueTest)) {\n return this.evaluateForTruthyValue(metadata, metadataSeparator, value);\n }\n\n if (this.falseExpression) {\n return new Composite(this.falseExpression, this.variable).evaluate(metadata, metadataSeparator);\n }\n\n return '';\n }\n\n evaluateForTruthyValue(metadata, metadataSeparator, value) {\n if (this.trueExpression) {\n return new Composite(this.trueExpression, this.variable).evaluate(metadata, metadataSeparator);\n }\n\n return value;\n }\n\n isRenderable() {\n return true;\n }\n\n clone() {\n return new Ternary({\n variable: this.variable,\n valueTest: this.valueTest,\n trueExpression: this.trueExpression?.map((part) => part.clone()),\n falseExpression: this.falseExpression?.map((part) => part.clone()),\n line: this.line,\n column: this.column,\n offset: this.offset,\n });\n }\n}\n\nexport default Ternary;\n","class EvaluationError extends Error {\n line: number;\n\n column: number;\n\n offset: number;\n\n constructor(message, line, column, offset) {\n super(`${message} on line ${line} column ${column}`);\n this.name = 'ExpressionError';\n this.line = line;\n this.column = column;\n this.offset = offset;\n }\n}\n\nexport default EvaluationError;\n","import Evaluatable from './evaluatable';\n\nclass Composite {\n expressions: Evaluatable[] = [];\n\n variable?: string;\n\n constructor(expressions, variable = null) {\n this.expressions = expressions;\n this.variable = variable;\n }\n\n evaluate(metadata, metadataSeparator) {\n return this.expressions.map((expression) => (\n expression.evaluate(metadata, metadataSeparator, this.variable)\n )).join('');\n }\n\n isRenderable() {\n return true;\n }\n\n clone() {\n return new Composite({\n expressions: this.expressions.map((expression) => expression.clone()),\n variable: this.variable,\n });\n }\n}\n\nexport default Composite;\n","import Song from '../chord_sheet/song';\nimport Line from '../chord_sheet/line';\nimport ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\n\nconst WHITE_SPACE = /\\s/;\nconst CHORD_LINE_REGEX = /^\\s*((([A-G])(#|b)?([^/\\s]*)(\\/([A-G])(#|b)?)?)(\\s|$)+)+(\\s|$)+/;\n\n/**\n * Parses a normal chord sheet\n */\nclass ChordSheetParser {\n processingText: boolean = true;\n\n preserveWhitespace: boolean = true;\n\n song?: Song;\n\n songLine?: Line;\n\n chordLyricsPair?: ChordLyricsPair;\n\n lines: string[] = [];\n\n currentLine: number = 0;\n\n lineCount: number = 0;\n\n /**\n * Instantiate a chord sheet parser\n * @param {Object} [options={}] options\n * @param {boolean} [options.preserveWhitespace=true] whether to preserve trailing whitespace for chords\n */\n constructor({ preserveWhitespace = true } = {}) {\n this.preserveWhitespace = (preserveWhitespace === true);\n }\n\n /**\n * Parses a chord sheet into a song\n * @param {string} chordSheet The ChordPro chord sheet\n * @param {Object} [options={}] Optional parser options\n * @param {Song} [options.song=null] The {@link Song} to store the song data in\n * @returns {Song} The parsed song\n */\n parse(chordSheet, { song = null } = {}) {\n this.initialize(chordSheet, { song });\n\n while (this.hasNextLine()) {\n const line = this.readLine();\n this.parseLine(line);\n }\n\n this.endOfSong();\n return this.song;\n }\n\n endOfSong() { }\n\n parseLine(line) {\n this.songLine = this.song.addLine();\n\n if (line.trim().length === 0) {\n this.chordLyricsPair = null;\n } else {\n this.parseNonEmptyLine(line);\n }\n }\n\n parseNonEmptyLine(line) {\n this.chordLyricsPair = this.songLine.addChordLyricsPair();\n\n if (CHORD_LINE_REGEX.test(line) && this.hasNextLine()) {\n const nextLine = this.readLine();\n this.parseLyricsWithChords(line, nextLine);\n } else {\n this.chordLyricsPair.lyrics = `${line}`;\n }\n }\n\n initialize(document, { song = null } = {}) {\n this.song = (song || new Song());\n this.lines = document.split('\\n');\n this.currentLine = 0;\n this.lineCount = this.lines.length;\n this.processingText = true;\n }\n\n readLine() {\n const line = this.lines[this.currentLine];\n this.currentLine += 1;\n return line;\n }\n\n hasNextLine() {\n return this.currentLine < this.lineCount;\n }\n\n parseLyricsWithChords(chordsLine, lyricsLine) {\n this.processCharacters(chordsLine, lyricsLine);\n\n this.chordLyricsPair.lyrics += lyricsLine.substring(chordsLine.length);\n\n this.chordLyricsPair.chords = this.chordLyricsPair.chords.trim();\n this.chordLyricsPair.lyrics = this.chordLyricsPair.lyrics.trim();\n\n if (!lyricsLine.trim().length) {\n this.songLine = this.song.addLine();\n }\n }\n\n processCharacters(chordsLine, lyricsLine) {\n for (let c = 0, charCount = chordsLine.length; c < charCount; c += 1) {\n const chr = chordsLine[c];\n const nextChar = chordsLine[c + 1];\n const isWhiteSpace = WHITE_SPACE.test(chr);\n this.addCharacter(chr, nextChar);\n\n this.chordLyricsPair.lyrics += lyricsLine[c] || '';\n this.processingText = !isWhiteSpace;\n }\n }\n\n addCharacter(chr, nextChar) {\n const isWhiteSpace = WHITE_SPACE.test(chr);\n\n if (!isWhiteSpace) {\n this.ensureChordLyricsPairInitialized();\n }\n\n if (!isWhiteSpace || this.shouldAddCharacterToChords(nextChar)) {\n this.chordLyricsPair.chords += chr;\n }\n }\n\n shouldAddCharacterToChords(nextChar) {\n return (nextChar && WHITE_SPACE.test(nextChar) && this.preserveWhitespace);\n }\n\n ensureChordLyricsPairInitialized() {\n if (!this.processingText) {\n this.chordLyricsPair = this.songLine.addChordLyricsPair();\n this.processingText = true;\n }\n }\n}\n\nexport default ChordSheetParser;\n","import { CHORUS, NONE, VERSE } from '../constants';\nimport ChordSheetParser from './chord_sheet_parser';\n\nimport Tag, {\n COMMENT,\n END_OF_CHORUS,\n END_OF_VERSE,\n START_OF_CHORUS,\n START_OF_VERSE,\n} from '../chord_sheet/tag';\n\nconst VERSE_LINE_REGEX = /^\\[Verse.*]/;\nconst CHORUS_LINE_REGEX = /^\\[Chorus]/;\nconst OTHER_METADATA_LINE_REGEX = /^\\[([^\\]]+)]/;\n\nconst startSectionTags = {\n [VERSE]: START_OF_VERSE,\n [CHORUS]: START_OF_CHORUS,\n};\n\nconst endSectionTags = {\n [VERSE]: END_OF_VERSE,\n [CHORUS]: END_OF_CHORUS,\n};\n\n/**\n * Parses an Ultimate Guitar chord sheet with metadata\n * Inherits from {@link ChordSheetParser}\n */\nclass UltimateGuitarParser extends ChordSheetParser {\n currentSectionType?: string;\n\n parseLine(line) {\n if (this.isSectionEnd()) {\n this.endSection();\n }\n\n if (VERSE_LINE_REGEX.test(line)) {\n this.startNewLine();\n this.startSection(VERSE);\n } else if (CHORUS_LINE_REGEX.test(line)) {\n this.startNewLine();\n this.startSection(CHORUS);\n } else if (OTHER_METADATA_LINE_REGEX.test(line)) {\n this.startNewLine();\n this.endSection();\n const comment = line.match(OTHER_METADATA_LINE_REGEX)[1];\n this.songLine.addTag(new Tag(COMMENT, comment));\n } else {\n super.parseLine(line);\n }\n }\n\n isSectionEnd() {\n return this.songLine && this.songLine.isEmpty() && this.song.previousLine && !this.song.previousLine.isEmpty();\n }\n\n endOfSong() {\n super.endOfSong();\n if (this.currentSectionType in endSectionTags) {\n this.startNewLine();\n }\n this.endSection({ addNewLine: false });\n }\n\n startSection(sectionType) {\n if (this.currentSectionType) {\n this.endSection();\n }\n\n this.currentSectionType = sectionType;\n this.song.setCurrentLineType(sectionType);\n\n if (sectionType in startSectionTags) {\n this.song.addTag(new Tag(startSectionTags[sectionType]));\n }\n }\n\n endSection({ addNewLine = true } = {}) {\n if (this.currentSectionType in endSectionTags) {\n this.song.addTag(new Tag(endSectionTags[this.currentSectionType]));\n\n if (addNewLine) {\n this.startNewLine();\n }\n }\n\n this.song.setCurrentLineType(NONE);\n this.currentSectionType = null;\n }\n\n startNewLine() {\n this.songLine = this.song.addLine();\n }\n}\n\nexport default UltimateGuitarParser;\n","import Formatter from './formatter';\nimport ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\nimport Tag from '../chord_sheet/tag';\nimport { renderChord } from '../helpers';\nimport { hasTextContents } from '../template_helpers';\nimport Song from '../chord_sheet/song';\n\nimport {\n hasChordContents,\n padLeft,\n} from '../utilities';\n\n/**\n * Formats a song into a plain text chord sheet\n */\nclass TextFormatter extends Formatter {\n song?: Song;\n\n /**\n * Formats a song into a plain text chord sheet\n * @param {Song} song The song to be formatted\n * @returns {string} the chord sheet\n */\n format(song) {\n this.song = song;\n\n return [\n this.formatHeader(),\n this.formatParagraphs(),\n ].join('');\n }\n\n formatHeader() {\n const { title, subtitle } = this.song;\n const separator = (title || subtitle) ? '\\n' : '';\n\n return [\n this.formatTitle(title),\n this.formatSubTitle(subtitle),\n separator,\n ].join('');\n }\n\n formatParagraphs() {\n const { bodyParagraphs, metadata } = this.song;\n\n return bodyParagraphs\n .map((paragraph) => this.formatParagraph(paragraph, metadata))\n .join('\\n\\n');\n }\n\n formatParagraph(paragraph, metadata) {\n return paragraph.lines\n .filter((line) => line.hasRenderableItems())\n .map((line) => this.formatLine(line, metadata))\n .join('\\n');\n }\n\n formatLine(line, metadata) {\n const parts = [\n this.formatLineTop(line),\n this.formatLineBottom(line, metadata),\n ];\n\n return parts\n .filter((i) => i !== null)\n .map((part) => part.trimRight())\n .join('\\n');\n }\n\n formatTitle(title) {\n if (title) {\n return `${title.toUpperCase()}\\n`;\n }\n\n return '';\n }\n\n formatSubTitle(subtitle) {\n if (subtitle) {\n return `${subtitle}\\n`;\n }\n\n return '';\n }\n\n formatLineTop(line) {\n if (hasChordContents(line)) {\n return this.formatLineWithFormatter(line, this.formatItemTop);\n }\n\n return null;\n }\n\n chordLyricsPairLength(chordLyricsPair, line) {\n const chords = renderChord(chordLyricsPair.chords, line.key, line.transposeKey, this.song);\n const { lyrics } = chordLyricsPair;\n const chordsLength = (chords || '').length;\n const lyricsLength = (lyrics || '').length;\n\n if (chordsLength >= lyricsLength) {\n return chordsLength + 1;\n }\n\n return Math.max(chordsLength, lyricsLength);\n }\n\n formatItemTop(item, metadata, line) {\n if (item instanceof Tag && item.isRenderable()) {\n return padLeft('', item.value);\n }\n\n if (item instanceof ChordLyricsPair) {\n const chords = renderChord(item.chords, line.key, line.transposeKey, this.song);\n return padLeft(chords, this.chordLyricsPairLength(item, line));\n }\n\n return '';\n }\n\n formatLineBottom(line, metadata) {\n if (hasTextContents(line)) {\n return this.formatLineWithFormatter(line, this.formatItemBottom, metadata);\n }\n\n return null;\n }\n\n formatLineWithFormatter(line, formatter, metadata = null) {\n return line\n .items\n .map((item) => formatter.call(this, item, metadata, line))\n .join('');\n }\n\n formatItemBottom(item, metadata, line) {\n if (item instanceof Tag && item.isRenderable()) {\n return item.value;\n }\n\n if (item instanceof ChordLyricsPair) {\n return padLeft(item.lyrics, this.chordLyricsPairLength(item, line));\n }\n\n if (typeof item.evaluate === 'function') {\n return item.evaluate(metadata, this.configuration.get('metadata.separator'));\n }\n\n return '';\n }\n}\n\nexport default TextFormatter;\n","import Configuration from './configuration/configuration';\n\n/**\n * Base class for all formatters, taking care of receiving a configuration wrapping that inside a Configuration object\n */\nclass Formatter {\n configuration: Configuration;\n\n /**\n * Instantiate\n * @param {Object} [configuration={}] options\n * @param {boolean} [configuration.evaluate=false] Whether or not to evaluate meta expressions. For more info about\n * meta expressions, see: https://bit.ly/2SC9c2u\n * @param {object} [configuration.metadata={}]\n * @param {string} [configuration.metadata.separator=\", \"] The separator to be used when rendering a metadata value\n * that has multiple values. See: https://bit.ly/2SC9c2u\n */\n constructor(configuration = {}) {\n this.configuration = new Configuration(configuration);\n }\n}\n\nexport default Formatter;\n","import lowdashGet from 'lodash.get';\n\nimport MetadataConfiguration from './metadata_configuration';\n\nclass Configuration {\n metadata?: MetadataConfiguration;\n\n evaluate: boolean;\n\n constructor({ evaluate = false, metadata = { separator: ',' } }) {\n this.evaluate = evaluate;\n this.metadata = new MetadataConfiguration(metadata);\n }\n\n get(key: string) {\n return lowdashGet(this, key);\n }\n}\n\nexport default Configuration;\n","class MetadataConfiguration {\n separator?: string;\n\n constructor({ separator }: { separator: string}) {\n this.separator = separator;\n }\n}\n\nexport default MetadataConfiguration;\n","import Chord from './chord';\nimport { isPresent } from './utilities';\nimport Key from './key';\nimport { capos, majorKeys, minorKeys } from './key_config.json';\n\nexport function transposeDistance(transposeKey, songKey) {\n if (/^\\d+$/.test(transposeKey)) {\n return parseInt(transposeKey, 10);\n }\n\n return Key.distance(songKey, transposeKey);\n}\n\nfunction chordTransposeDistance(capo, transposeKey, songKey) {\n let transpose = -1 * (capo || 0);\n\n if (isPresent(transposeKey) && isPresent(songKey)) {\n transpose += transposeDistance(transposeKey, songKey);\n }\n return transpose;\n}\n\nexport function renderChord(chord, lineKey, transposeKey, song) {\n let chordObj = Chord.parse(chord);\n const { capo, key: songKey } = song;\n\n if (!chordObj) {\n return chord;\n }\n\n chordObj = chordObj.transpose(chordTransposeDistance(capo, transposeKey, songKey));\n\n if (isPresent(transposeKey)) {\n chordObj = chordObj.useModifier(transposeKey.modifier);\n }\n\n if (isPresent(lineKey)) {\n chordObj = chordObj.normalize(lineKey);\n }\n\n return chordObj.toString();\n}\n\n/**\n * Returns applicable capos for the provided key\n * @param {Key|string} key The key to get capos for\n * @returns {Object.<string, string>} The available capos, where the keys are capo numbers and the\n * values are the effective key for that capo.\n */\nexport function getCapos(key) {\n return capos[Key.toString(key)];\n}\n\n/**\n * Returns applicable keys to transpose to from the provided key\n * @param {Key|string} key The key to get keys for\n * @returns {Array<string>} The available keys\n */\nexport function getKeys(key) {\n const keyObj = Key.wrap(key);\n return keyObj.isMinor() ? minorKeys : majorKeys;\n}\n","{\n \"majorKeys\": [\"A\", \"Bb\", \"B\", \"C\", \"C#\", \"Db\", \"D\", \"Eb\", \"E\", \"F\", \"F#\", \"Gb\", \"G\", \"G#\", \"Ab\"],\n \"minorKeys\": [\"F#m\", \"Gm\", \"G#m\", \"Am\", \"Bbm\", \"Bm\", \"Cm\", \"C#m\", \"Dm\", \"D#m\", \"Ebm\", \"Em\", \"Fm\"],\n \"capos\": {\n \"Bb\": {\"1\": \"A\", \"3\": \"G\", \"6\": \"E\", \"8\": \"D\", \"10\": \"C\"},\n \"D\": {\"2\": \"C\", \"5\": \"A\", \"7\": \"G\", \"10\": \"E\"},\n \"Eb\": {\"1\": \"D\", \"3\": \"C\", \"6\": \"A\", \"8\": \"G\"},\n \"Db\": {\"1\": \"C\", \"4\": \"A\", \"6\": \"G\", \"9\": \"E\"},\n \"C#\": {\"1\": \"C\", \"4\": \"A\", \"6\": \"G\", \"9\": \"E\"},\n \"E\": {\"2\": \"D\", \"4\": \"C\", \"7\": \"A\", \"9\": \"G\"},\n \"F\": {\"1\": \"E\", \"3\": \"D\", \"5\": \"C\", \"6\": \"B\", \"8\": \"A\", \"10\": \"G\"},\n \"F#\": {\"2\": \"E\", \"4\": \"D\", \"6\": \"C\", \"7\": \"B\", \"9\": \"A\"},\n \"Gb\": {\"2\": \"E\", \"4\": \"D\", \"6\": \"C\", \"7\": \"B\", \"9\": \"A\"},\n \"G\": {\"3\": \"E\", \"5\": \"D\", \"7\": \"C\", \"8\": \"B\", \"10\": \"A\"},\n \"G#\": {\"1\": \"G\", \"4\": \"E\", \"6\": \"D\", \"8\": \"C\"},\n \"Ab\": {\"1\": \"G\", \"4\": \"E\", \"6\": \"D\", \"8\": \"C\"},\n \"A\": {\"2\": \"G\", \"5\": \"E\", \"7\": \"D\", \"9\": \"C\"},\n \"B\": {\"2\": \"A\", \"4\": \"G\", \"7\": \"E\", \"9\": \"D\"},\n \"C\": {\"3\": \"A\", \"5\": \"G\", \"8\": \"E\", \"10\": \"D\"},\n \"Am\": {\"3\": \"F#m\", \"5\": \"Em\", \"7\": \"Dm\"},\n \"Bbm\": {\"1\": \"Am\", \"4\": \"F#m\", \"6\": \"Em\", \"8\": \"Dm\"},\n \"Bm\": {\"2\": \"Am\", \"5\": \"F#m\", \"7\": \"Em\"},\n \"Cm\": {\"1\": \"Bm\", \"3\": \"Am\", \"6\": \"F#m\", \"8\": \"Em\"},\n \"C#m\": {\"2\": \"Bm\", \"4\": \"Am\", \"7\": \"F#m\", \"9\": \"Em\"},\n \"Dm\": {\"3\": \"Bm\", \"5\": \"Am\", \"8\": \"F#m\"},\n \"Ebm\": {\"1\": \"Dm\", \"4\": \"Bm\", \"6\": \"Am\"},\n \"D#m\": {\"1\": \"Dm\", \"4\": \"Bm\", \"6\": \"Am\"}\n }\n}\n","import ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Tag from './chord_sheet/tag';\nimport { INDETERMINATE, NONE } from './constants';\nimport { isEvaluatable } from './utilities';\n\ninterface EachCallback {\n (_item: any): string;\n}\n\ninterface WhenCallback {\n (): string;\n}\n\nexport { isEvaluatable } from './utilities';\n\nexport const isChordLyricsPair = (item) => item instanceof ChordLyricsPair;\n\nexport const lineHasContents = (line) => line.items.some((item) => item.isRenderable());\n\nexport const isTag = (item) => item instanceof Tag;\n\nexport const isComment = (item) => item.name === 'comment';\n\nexport function stripHTML(string: string): string {\n return string.trim().replace(/(<\\/[a-z]+>)\\s+(<)/g, '$1$2').replace(/(\\n)\\s+/g, '');\n}\n\nexport function each(collection: any[], callback: EachCallback) {\n return collection.map(callback).join('');\n}\n\nexport function when(condition: boolean, callback: WhenCallback) {\n return condition ? callback() : '';\n}\n\nexport const hasTextContents = (line) => (\n line.items.some((item) => (\n (item instanceof ChordLyricsPair && item.lyrics)\n || (item instanceof Tag && item.isRenderable())\n || isEvaluatable(item)\n ))\n);\n\nexport const lineClasses = (line) => {\n const classes = ['row'];\n\n if (!lineHasContents(line)) {\n classes.push('empty-line');\n }\n\n return classes.join(' ');\n};\n\nexport const paragraphClasses = (paragraph) => {\n const classes = ['paragraph'];\n\n if (paragraph.type !== INDETERMINATE && paragraph.type !== NONE) {\n classes.push(paragraph.type);\n }\n\n return classes.join(' ');\n};\n\nexport const evaluate = (item, metadata, configuration) => {\n if (!metadata) {\n throw new Error('cannot evaluate, metadata is null');\n }\n\n return item.evaluate(metadata, configuration.get('metadata.separator'));\n};\n","import HtmlFormatter from './html_formatter';\nimport template from './templates/html_table_formatter';\nimport { scopeCss } from '../utilities';\n\n/**\n * Basic CSS, in object style à la useStyles, to use with output generated by {@link }HtmlTableFormatter}\n * For a CSS string see {@link scopedCss}\n * @type {Object.<string, Object.<string, string>>}\n */\nexport const defaultCss = {\n h1: {\n fontSize: '1.5em',\n },\n h2: {\n fontSize: '1.1em',\n },\n table: {\n borderSpacing: '0',\n color: 'inherit',\n },\n td: {\n padding: '3px 0',\n },\n '.chord:not(:last-child)': {\n paddingRight: '10px',\n },\n '.paragraph': {\n marginBottom: '1em',\n },\n};\n\n/**\n * Generates basic CSS, scoped within the provided selector, to use with output generated by {@link HtmlTableFormatter}\n * @param scope the CSS scope to use, for example `.chordSheetViewer`\n * @returns {string} the CSS string\n */\nexport function scopedCss(scope) {\n return scopeCss(defaultCss, scope);\n}\n\n/**\n * Formats a song into HTML. It uses TABLEs to align lyrics with chords, which makes the HTML for things like\n * PDF conversion.\n */\nclass HtmlTableFormatter extends HtmlFormatter {\n /**\n * Formats a song into HTML.\n * @param {Song} song The song to be formatted\n * @returns {string} The HTML string\n */\n format(song) {\n return this.formatWithTemplate(song, template);\n }\n\n /**\n * Generates basic CSS, optionally scoped within the provided selector, to use with output generated by\n * {@link HtmlTableFormatter}\n *\n * For example, execute cssString('.chordSheetViewer') will result in CSS like:\n *\n * .chordSheetViewer .paragraph {\n * margin-bottom: 1em;\n * }\n *\n * @param scope the CSS scope to use, for example `.chordSheetViewer`\n * @returns {string} the CSS string\n */\n static cssString(scope = '') {\n return scopeCss(defaultCss, scope);\n }\n\n /**\n * Basic CSS, in object style à la useStyles, to use with output generated by {@link HtmlTableFormatter}\n * For a CSS string see {@link cssString}\n *\n * Example:\n *\n * '.paragraph': {\n * marginBottom: '1em'\n * }\n *\n * @return {Object.<string, Object.<string, string>>} the CSS object\n */\n static cssObject() {\n return defaultCss;\n }\n}\n\nexport default HtmlTableFormatter;\n","import Formatter from './formatter';\n\n/**\n * Acts as a base class for HTML formatters, taking care of whitelisting prototype property access.\n */\nclass HtmlFormatter extends Formatter {\n formatWithTemplate(song, template) {\n return template(\n {\n song,\n configuration: this.configuration,\n },\n );\n }\n}\n\nexport default HtmlFormatter;\n","import { hasChordContents, isEvaluatable } from '../../utilities';\nimport { renderChord } from '../../helpers';\n\nimport {\n each,\n evaluate,\n hasTextContents,\n isChordLyricsPair,\n isComment,\n isTag,\n lineClasses,\n lineHasContents,\n paragraphClasses,\n stripHTML,\n when,\n} from '../../template_helpers';\n\nexport default (\n {\n configuration,\n song,\n renderBlankLines = false,\n song: {\n title,\n subtitle,\n bodyParagraphs,\n bodyLines,\n metadata,\n },\n },\n): string => stripHTML(`\n ${ when(title, () => `<h1>${ title}</h1>`) }\n ${ when(subtitle, () => `<h2>${ subtitle}</h2>`) }\n\n ${ when(bodyLines.length > 0, () => `\n <div class=\"chord-sheet\">\n ${ each(bodyParagraphs, (paragraph) => `\n <div class=\"${ paragraphClasses(paragraph)}\">\n ${ each(paragraph.lines, (line) => `\n ${ when(renderBlankLines || lineHasContents(line), () => `\n <table class=\"${ lineClasses(line)}\">\n ${ when(hasChordContents(line), () => `\n <tr>\n ${ each(line.items, (item) => `\n ${ when(isChordLyricsPair(item), () => `\n <td class=\"chord\">${ \n renderChord(item.chords, line.key, line.transposeKey, song)\n }</td>\n `)}\n `)}\n </tr>\n `)}\n \n ${ when(hasTextContents(line), () => `\n <tr>\n ${ each(line.items, (item) => `\n ${ when(isChordLyricsPair(item), () => `\n <td class=\"lyrics\">${ item.lyrics}</td>\n `)}\n \n ${ when(isTag(item) && isComment(item), () => `\n <td class=\"comment\">${ item.value }</td>\n `)}\n \n ${ when(isEvaluatable(item), () => `\n <td class=\"lyrics\">${ evaluate(item, metadata, configuration) }</td>\n `) }\n `)}\n </tr>\n `)}\n </table>\n `)}\n `)}\n </div>\n `)}\n </div>\n `)}\n`);\n","import HtmlFormatter from './html_formatter';\nimport template from './templates/html_div_formatter';\nimport { scopeCss } from '../utilities';\n\nconst defaultCss = {\n '.chord:not(:last-child)': {\n paddingRight: '10px',\n },\n\n '.paragraph': {\n marginBottom: '1em',\n },\n\n '.row': {\n display: 'flex',\n },\n\n '.chord:after': {\n content: '\\'\\\\200b\\'',\n },\n\n '.lyrics:after': {\n content: '\\'\\\\200b\\'',\n },\n};\n\n/**\n * Formats a song into HTML. It uses DIVs to align lyrics with chords, which makes it useful for responsive web pages.\n */\nclass HtmlDivFormatter extends HtmlFormatter {\n /**\n * Formats a song into HTML.\n * @param {Song} song The song to be formatted\n * @returns {string} The HTML string\n */\n format(song) {\n return this.formatWithTemplate(song, template);\n }\n\n /**\n * Generates basic CSS, optionally scoped within the provided selector, to use with output generated by\n * {@link HtmlDivFormatter}\n *\n * For example, execute cssString('.chordSheetViewer') will result in CSS like:\n *\n * .chordSheetViewer .paragraph {\n * margin-bottom: 1em;\n * }\n *\n * @param scope the CSS scope to use, for example `.chordSheetViewer`\n * @returns {string} the CSS string\n */\n static cssString(scope = '') {\n return scopeCss(defaultCss, scope);\n }\n\n /**\n * Basic CSS, in object style à la useStyles, to use with output generated by {@link HtmlDivFormatter}\n *\n * Example:\n *\n * '.paragraph': {\n * marginBottom: '1em'\n * }\n *\n * For a CSS string see {@link cssString}\n * @return {Object.<string, Object.<string, string>>} the CSS object\n */\n static cssObject() {\n return defaultCss;\n }\n}\n\nexport default HtmlDivFormatter;\n","import { renderChord } from '../../helpers';\n\nimport {\n each, evaluate,\n isChordLyricsPair,\n isComment,\n isEvaluatable,\n isTag,\n lineClasses,\n lineHasContents,\n paragraphClasses,\n stripHTML, when,\n} from '../../template_helpers';\n\nexport default (\n {\n configuration,\n song,\n renderBlankLines = false,\n song: {\n title,\n subtitle,\n bodyParagraphs,\n metadata,\n },\n },\n): string => stripHTML(`\n ${ when(title, () => `<h1>${ title }</h1>`) }\n ${ when(subtitle, () => `<h2>${ subtitle }</h2>`) }\n \n <div class=\"chord-sheet\">\n ${ each(bodyParagraphs, (paragraph) => `\n <div class=\"${ paragraphClasses(paragraph) }\">\n ${ each(paragraph.lines, (line) => `\n ${ when(renderBlankLines || lineHasContents(line), () => `\n <div class=\"${ lineClasses(line) }\">\n ${ each(line.items, (item) => `\n ${ when(isChordLyricsPair(item), () => `\n <div class=\"column\">\n <div class=\"chord\">${ renderChord(item.chords, line.key, line.transposeKey, song) }</div>\n <div class=\"lyrics\">${ item.lyrics }</div>\n </div>\n `) }\n \n ${ when(isTag(item) && isComment(item), () => `<div class=\"comment\">${ item.value }</div>`) }\n \n ${ when(isEvaluatable(item), () => `\n <div class=\"column\">\n <div class=\"chord\"></div>\n <div class=\"lyrics\">${ evaluate(item, metadata, configuration) }</div>\n </div>\n `) }\n `) }\n </div>\n `) }\n `) }\n </div>\n `) }\n </div>\n`);\n","import Formatter from './formatter';\nimport Tag from '../chord_sheet/tag';\nimport ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\nimport Ternary from '../chord_sheet/chord_pro/ternary';\nimport Literal from '../chord_sheet/chord_pro/literal';\n\nconst NEW_LINE = '\\n';\n\n/**\n * Formats a song into a ChordPro chord sheet\n */\nclass ChordProFormatter extends Formatter {\n /**\n * Formats a song into a ChordPro chord sheet.\n * @param {Song} song The song to be formatted\n * @returns {string} The ChordPro string\n */\n format(song) {\n const { lines, metadata } = song;\n\n return lines\n .map((line) => this.formatLine(line, metadata))\n .join(NEW_LINE);\n }\n\n formatLine(line, metadata) {\n return line.items\n .map((item) => this.formatItem(item, metadata))\n .join('');\n }\n\n formatItem(item, metadata) {\n if (item instanceof Tag) {\n return this.formatTag(item);\n }\n\n if (item instanceof ChordLyricsPair) {\n return this.formatChordLyricsPair(item);\n }\n\n if (typeof item.evaluate === 'function') {\n return this.formatOrEvaluateItem(item, metadata);\n }\n\n throw new Error(`Don't know how to format a ${item.constructor.name}`);\n }\n\n formatOrEvaluateItem(item, metadata) {\n if (this.configuration.evaluate) {\n return item.evaluate(metadata, this.configuration.get('metadata.separator'));\n }\n\n if (item instanceof Ternary) {\n return this.formatTernary(item);\n }\n\n if (item instanceof Literal) {\n return item.evaluate();\n }\n\n throw new Error(`Don't know how to format a ${item.constructor.name}`);\n }\n\n formatTernary(ternary) {\n const {\n variable,\n valueTest,\n trueExpression,\n falseExpression,\n } = ternary;\n\n return [\n '%{',\n variable || '',\n this.formatValueTest(valueTest),\n this.formatExpressionRange(trueExpression),\n this.formatExpressionRange(falseExpression),\n '}',\n ].join('');\n }\n\n formatValueTest(valueTest) {\n if (!valueTest) {\n return '';\n }\n\n return `=${valueTest}`;\n }\n\n formatExpressionRange(expressionRange) {\n if (!expressionRange) {\n return '';\n }\n\n return `|${expressionRange.map((expression) => this.formatExpression(expression)).join('')}`;\n }\n\n formatExpression(expression) {\n if (expression instanceof Ternary) {\n return this.formatTernary(expression);\n }\n\n if (expression instanceof Literal) {\n return expression.string;\n }\n\n return '';\n }\n\n formatTag(tag) {\n if (tag.hasValue()) {\n return `{${tag.originalName}: ${tag.value}}`;\n }\n\n return `{${tag.originalName}}`;\n }\n\n formatChordLyricsPair(chordLyricsPair) {\n return [\n this.formatChordLyricsPairChords(chordLyricsPair),\n this.formatChordLyricsPairLyrics(chordLyricsPair),\n ].join('');\n }\n\n formatChordLyricsPairChords(chordLyricsPair) {\n if (chordLyricsPair.chords) {\n return `[${chordLyricsPair.chords}]`;\n }\n\n return '';\n }\n\n formatChordLyricsPairLyrics(chordLyricsPair) {\n return chordLyricsPair.lyrics || '';\n }\n}\n\nexport default ChordProFormatter;\n"],"names":[],"version":3,"file":"index.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["src/index.ts","src/parser/chord_pro_parser.ts","src/parser/chord_pro_peg_parser.ts","src/chord_sheet_serializer.ts","src/chord_sheet/chord_pro/literal.ts","src/chord_sheet/song.ts","src/chord_sheet/line.ts","src/chord_sheet/chord_lyrics_pair.ts","src/chord.ts","src/key.ts","src/note.ts","src/constants.ts","src/normalize_mappings/enharmonic-normalize.ts","src/utilities.ts","src/normalize_mappings/suffix-normalize-mapping.ts","src/chord_sheet/tag.ts","src/chord_sheet/ast_component.ts","src/chord_sheet/comment.ts","src/chord_sheet/paragraph.ts","src/chord_sheet/metadata.ts","src/chord_sheet/metadata_accessors.ts","src/parser/parser_warning.ts","src/chord_sheet/chord_pro/ternary.ts","src/chord_sheet/chord_pro/evaluation_error.ts","src/chord_sheet/chord_pro/composite.ts","src/parser/chord_sheet_parser.ts","src/parser/ultimate_guitar_parser.ts","src/formatter/text_formatter.ts","src/formatter/formatter.ts","src/formatter/configuration/configuration.ts","src/formatter/configuration/metadata_configuration.ts","src/helpers.ts","src/key_config.json","src/template_helpers.ts","src/formatter/html_table_formatter.ts","src/formatter/html_formatter.ts","src/formatter/templates/html_table_formatter.ts","src/formatter/html_div_formatter.ts","src/formatter/templates/html_div_formatter.ts","src/formatter/chord_pro_formatter.ts"],"sourcesContent":["import ChordProParser from './parser/chord_pro_parser';\nimport ChordSheetParser from './parser/chord_sheet_parser';\nimport UltimateGuitarParser from './parser/ultimate_guitar_parser';\nimport TextFormatter from './formatter/text_formatter';\nimport HtmlTableFormatter from './formatter/html_table_formatter';\nimport HtmlDivFormatter from './formatter/html_div_formatter';\nimport ChordProFormatter from './formatter/chord_pro_formatter';\nimport ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Line from './chord_sheet/line';\nimport Song from './chord_sheet/song';\nimport Tag from './chord_sheet/tag';\nimport Comment from './chord_sheet/comment';\nimport Metadata from './chord_sheet/metadata';\nimport Paragraph from './chord_sheet/paragraph';\nimport Ternary from './chord_sheet/chord_pro/ternary';\nimport Composite from './chord_sheet/chord_pro/composite';\nimport Literal from './chord_sheet/chord_pro/literal';\nimport ChordSheetSerializer from './chord_sheet_serializer';\n\nimport {\n CHORUS,\n INDETERMINATE,\n VERSE,\n NONE,\n TAB,\n} from './constants';\n\nexport { default as ChordProParser } from './parser/chord_pro_parser';\nexport { default as ChordSheetParser } from './parser/chord_sheet_parser';\nexport { default as UltimateGuitarParser } from './parser/ultimate_guitar_parser';\nexport { default as TextFormatter } from './formatter/text_formatter';\nexport { default as HtmlTableFormatter } from './formatter/html_table_formatter';\nexport { default as HtmlDivFormatter } from './formatter/html_div_formatter';\nexport { default as ChordProFormatter } from './formatter/chord_pro_formatter';\nexport { default as ChordLyricsPair } from './chord_sheet/chord_lyrics_pair';\nexport { default as Line } from './chord_sheet/line';\nexport { default as Song } from './chord_sheet/song';\nexport { default as Tag } from './chord_sheet/tag';\nexport { default as Comment } from './chord_sheet/comment';\nexport { default as Metadata } from './chord_sheet/metadata';\nexport { default as Paragraph } from './chord_sheet/paragraph';\nexport { default as Ternary } from './chord_sheet/chord_pro/ternary';\nexport { default as Composite } from './chord_sheet/chord_pro/composite';\nexport { default as Literal } from './chord_sheet/chord_pro/literal';\nexport { default as ChordSheetSerializer } from './chord_sheet_serializer';\nexport { default as Chord, parseChord } from './chord';\nexport { default as Key } from './key';\n\nexport {\n CHORUS,\n INDETERMINATE,\n VERSE,\n NONE,\n TAB,\n SYMBOL,\n NUMERIC,\n} from './constants';\n\nexport default {\n ChordProParser,\n ChordSheetParser,\n UltimateGuitarParser,\n TextFormatter,\n HtmlTableFormatter,\n HtmlDivFormatter,\n ChordProFormatter,\n ChordLyricsPair,\n Line,\n Song,\n Tag,\n Comment,\n Metadata,\n Paragraph,\n Ternary,\n Composite,\n Literal,\n ChordSheetSerializer,\n CHORUS,\n INDETERMINATE,\n TAB,\n VERSE,\n NONE,\n};\n","import { Song } from '../index';\nimport { parse } from './chord_pro_peg_parser';\nimport ChordSheetSerializer from '../chord_sheet_serializer';\nimport ParserWarning from './parser_warning';\n\n/**\n * Parses a ChordPro chord sheet\n */\nclass ChordProParser {\n song?: Song;\n\n /**\n * Parses a ChordPro chord sheet into a song\n * @param {string} chordProChordSheet the ChordPro chord sheet\n * @returns {Song} The parsed song\n */\n parse(chordProChordSheet) {\n const ast = parse(chordProChordSheet);\n this.song = new ChordSheetSerializer().deserialize(ast);\n return this.song;\n }\n\n /**\n * All warnings raised during parsing the ChordPro chord sheet\n * @member\n * @type {ParserWarning[]}\n */\n get warnings(): ParserWarning[] {\n return this.song.warnings;\n }\n}\n\nexport default ChordProParser;\n","\n// Generated by peggy v. 2.0.1 (ts-pegjs plugin v. 2.0.1 )\n//\n// https://peggyjs.org/ https://github.com/metadevpro/ts-pegjs\n\nexport interface IFilePosition {\n offset: number;\n line: number;\n column: number;\n}\n\nexport interface IFileRange {\n start: IFilePosition;\n end: IFilePosition;\n source: string;\n}\n\nexport interface ILiteralExpectation {\n type: \"literal\";\n text: string;\n ignoreCase: boolean;\n}\n\nexport interface IClassParts extends Array<string | IClassParts> {}\n\nexport interface IClassExpectation {\n type: \"class\";\n parts: IClassParts;\n inverted: boolean;\n ignoreCase: boolean;\n}\n\nexport interface IAnyExpectation {\n type: \"any\";\n}\n\nexport interface IEndExpectation {\n type: \"end\";\n}\n\nexport interface IOtherExpectation {\n type: \"other\";\n description: string;\n}\n\nexport type Expectation = ILiteralExpectation | IClassExpectation | IAnyExpectation | IEndExpectation | IOtherExpectation;\n\nfunction peg$padEnd(str: string, targetLength: number, padString: string) {\n padString = padString || ' ';\n if (str.length > targetLength) {\n return str;\n }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\nexport class SyntaxError extends Error {\n public static buildMessage(expected: Expectation[], found: string | null) {\n function hex(ch: string): string {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s: string): string {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch) )\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch) );\n }\n\n function classEscape(s: string): string {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, (ch) => \"\\\\x0\" + hex(ch) )\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\" + hex(ch) );\n }\n\n function describeExpectation(expectation: Expectation) {\n switch (expectation.type) {\n case \"literal\":\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n case \"class\":\n const escapedParts = expectation.parts.map((part) => {\n return Array.isArray(part)\n ? classEscape(part[0] as string) + \"-\" + classEscape(part[1] as string)\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n case \"any\":\n return \"any character\";\n case \"end\":\n return \"end of input\";\n case \"other\":\n return expectation.description;\n }\n }\n\n function describeExpected(expected1: Expectation[]) {\n const descriptions = expected1.map(describeExpectation);\n let i: number;\n let j: number;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found1: string | null) {\n return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n }\n\n public message: string;\n public expected: Expectation[];\n public found: string | null;\n public location: IFileRange;\n public name: string;\n\n constructor(message: string, expected: Expectation[], found: string | null, location: IFileRange) {\n super();\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof (Object as any).setPrototypeOf === \"function\") {\n (Object as any).setPrototypeOf(this, SyntaxError.prototype);\n } else {\n (this as any).__proto__ = SyntaxError.prototype;\n }\n if (typeof (Error as any).captureStackTrace === \"function\") {\n (Error as any).captureStackTrace(this, SyntaxError);\n }\n }\n\n format(sources: { source: string; text: string }[]): string {\n let str = 'Error: ' + this.message;\n if (this.location) {\n let src: string[] | null = null;\n let k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n let s = this.location.start;\n let loc = this.location.source + ':' + s.line + ':' + s.column;\n if (src) {\n let e = this.location.end;\n let filler = peg$padEnd('', s.line.toString().length, ' ');\n let line = src[s.line - 1];\n let last = s.line === e.line ? e.column : line.length + 1;\n str += '\\n --> ' + loc + '\\n' + filler + ' |\\n' + s.line + ' | ' + line + '\\n' + filler + ' | ' +\n peg$padEnd('', s.column - 1, ' ') +\n peg$padEnd('', last - s.column, '^');\n } else {\n str += '\\n at ' + loc;\n }\n }\n return str;\n }\n}\n\nfunction peg$parse(input: string, options?: IParseOptions) {\n options = options !== undefined ? options : {};\n\n const peg$FAILED: Readonly<any> = {};\n const peg$source = options.grammarSource;\n\n const peg$startRuleFunctions: {[id: string]: any} = { };\n let peg$startRuleFunction: () => any = peg$parseChordSheet;\n\n const peg$c0 = function(lines: any, line: any): any {\n return {\n type: \"chordSheet\",\n lines: [...lines, line]\n }\n };\n const peg$c1 = function(line: any): any {\n return line\n };\n const peg$c2 = function(lyrics: any, tokens: any, chords: any, comment: any): any {\n return {\n type: \"line\",\n items: [\n lyrics ? {type: \"chordLyricsPair\", chords: '', lyrics} : null,\n ...tokens,\n chords ? {type: \"chordLyricsPair\", chords, lyrics: ''} : null,\n comment ? {type: \"comment\", comment} : null\n ].filter(x => x)\n }\n };\n const peg$c3 = \"#\";\n const peg$c4 = peg$literalExpectation(\"#\", false);\n const peg$c5 = /^[^\\r\\n]/;\n const peg$c6 = peg$classExpectation([\"\\r\", \"\\n\"], true, false);\n const peg$c7 = function(comment: any): any {\n return comment;\n };\n const peg$c8 = function(chords: any, lyrics: any): any {\n return { type: \"chordLyricsPair\", chords: chords || '', lyrics }\n };\n const peg$c9 = function(lyrics: any): any {\n return lyrics.map(c => c.char || c).join(\"\");\n };\n const peg$c10 = \"[\";\n const peg$c11 = peg$literalExpectation(\"[\", false);\n const peg$c12 = \"]\";\n const peg$c13 = peg$literalExpectation(\"]\", false);\n const peg$c14 = function(chords: any): any {\n return chords.map(c => c.char || c).join(\"\");\n };\n const peg$c15 = /^[^\\]\\r\\n]/;\n const peg$c16 = peg$classExpectation([\"]\", \"\\r\", \"\\n\"], true, false);\n const peg$c17 = \"\\\\\";\n const peg$c18 = peg$literalExpectation(\"\\\\\", false);\n const peg$c19 = function(): any { return {type: \"char\", char: \"\\\\\"}; };\n const peg$c20 = function(): any { return {type: \"char\", char: \"]\"}; };\n const peg$c21 = function(sequence: any): any { return sequence; };\n const peg$c22 = \"%{\";\n const peg$c23 = peg$literalExpectation(\"%{\", false);\n const peg$c24 = \"}\";\n const peg$c25 = peg$literalExpectation(\"}\", false);\n const peg$c26 = function(variableName: any, valueTest: any, expressions: any): any {\n return {\n \"type\": \"ternary\",\n variable: variableName.length > 0 ? variableName : null,\n valueTest,\n ...expressions,\n location: location().start\n };\n };\n const peg$c27 = \"=\";\n const peg$c28 = peg$literalExpectation(\"=\", false);\n const peg$c29 = function(testValue: any): any {\n return testValue;\n };\n const peg$c30 = \"|\";\n const peg$c31 = peg$literalExpectation(\"|\", false);\n const peg$c32 = function(trueExpression: any, falseExpression: any): any {\n return {\n \"type\": \"ternary\",\n trueExpression,\n falseExpression,\n location: location().start\n }\n };\n const peg$c33 = function(falseExpression: any): any {\n return falseExpression;\n };\n const peg$c34 = /^[a-zA-Z0-9\\-_]/;\n const peg$c35 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"-\", \"_\"], false, false);\n const peg$c36 = function(): any { return {type: \"char\", char: \"|\"}; };\n const peg$c37 = function(): any { return {type: \"char\", char: \"\\x7d\"}; };\n const peg$c38 = /^[^|[\\]\\\\{}%#\\r\\n]/;\n const peg$c39 = peg$classExpectation([\"|\", \"[\", \"]\", \"\\\\\", \"{\", \"}\", \"%\", \"#\", \"\\r\", \"\\n\"], true, false);\n const peg$c40 = function(): any { return {type: \"char\", char: \"[\"}; };\n const peg$c41 = \"{\";\n const peg$c42 = peg$literalExpectation(\"{\", false);\n const peg$c43 = function(): any { return {type: \"char\", char: \"\\x7b\"}; };\n const peg$c44 = \"%\";\n const peg$c45 = peg$literalExpectation(\"%\", false);\n const peg$c46 = function(): any { return {type: \"char\", char: \"%\"}; };\n const peg$c47 = function(): any { return {type: \"char\", char: \"#\"}; };\n const peg$c48 = function(tagName: any, tagColonWithValue: any): any {\n return {\n type: \"tag\",\n name: tagName,\n value: tagColonWithValue,\n location: location().start\n }\n };\n const peg$c49 = \":\";\n const peg$c50 = peg$literalExpectation(\":\", false);\n const peg$c51 = function(tagValue: any): any {\n return tagValue.map(c => c.char || c).join('');\n };\n const peg$c52 = /^[a-zA-Z\\-_]/;\n const peg$c53 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"-\", \"_\"], false, false);\n const peg$c54 = /^[^}\\\\\\r\\n]/;\n const peg$c55 = peg$classExpectation([\"}\", \"\\\\\", \"\\r\", \"\\n\"], true, false);\n const peg$c56 = peg$otherExpectation(\"whitespace\");\n const peg$c57 = /^[ \\t\\n\\r]/;\n const peg$c58 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false);\n const peg$c59 = peg$otherExpectation(\"space\");\n const peg$c60 = /^[ \\t]/;\n const peg$c61 = peg$classExpectation([\" \", \"\\t\"], false, false);\n const peg$c62 = \"\\n\";\n const peg$c63 = peg$literalExpectation(\"\\n\", false);\n const peg$c64 = \"\\r\";\n const peg$c65 = peg$literalExpectation(\"\\r\", false);\n\n let peg$currPos = 0;\n let peg$savedPos = 0;\n const peg$posDetailsCache = [{ line: 1, column: 1 }];\n let peg$maxFailPos = 0;\n let peg$maxFailExpected: Expectation[] = [];\n let peg$silentFails = 0;\n\n let peg$result;\n\n if (options.startRule !== undefined) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text(): string {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location(): IFileRange {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description: string, location1?: IFileRange) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location1\n );\n }\n\n function error(message: string, location1?: IFileRange) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location1);\n }\n\n function peg$literalExpectation(text1: string, ignoreCase: boolean): ILiteralExpectation {\n return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts: IClassParts, inverted: boolean, ignoreCase: boolean): IClassExpectation {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation(): IAnyExpectation {\n return { type: \"any\" };\n }\n\n function peg$endExpectation(): IEndExpectation {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description: string): IOtherExpectation {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos: number) {\n let details = peg$posDetailsCache[pos];\n let p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos: number, endPos: number): IFileRange {\n const startPosDetails = peg$computePosDetails(startPos);\n const endPosDetails = peg$computePosDetails(endPos);\n\n return {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected1: Expectation) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected1);\n }\n\n function peg$buildSimpleError(message: string, location1: IFileRange) {\n return new SyntaxError(message, [], \"\", location1);\n }\n\n function peg$buildStructuredError(expected1: Expectation[], found: string | null, location1: IFileRange) {\n return new SyntaxError(\n SyntaxError.buildMessage(expected1, found),\n expected1,\n found,\n location1\n );\n }\n\n function peg$parseChordSheet(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseLineWithNewline();\n while (s2 as any !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseLineWithNewline();\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parseLine();\n if (s2 as any === peg$FAILED) {\n s2 = null;\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLineWithNewline(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseLine();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parseNewLine();\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLine(): any {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseLyrics();\n if (s1 as any === peg$FAILED) {\n s1 = null;\n }\n if (s1 as any !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseToken();\n while (s3 as any !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseToken();\n }\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseChord();\n if (s3 as any === peg$FAILED) {\n s3 = null;\n }\n if (s3 as any !== peg$FAILED) {\n s4 = peg$parseComment();\n if (s4 as any === peg$FAILED) {\n s4 = null;\n }\n if (s4 as any !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseSpace();\n while (s6 as any !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseSpace();\n }\n if (s5 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1, s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseToken(): any {\n let s0;\n\n s0 = peg$parseTag();\n if (s0 as any === peg$FAILED) {\n s0 = peg$parseChordLyricsPair();\n if (s0 as any === peg$FAILED) {\n s0 = peg$parseMetaTernary();\n }\n }\n\n return s0;\n }\n\n function peg$parseComment(): any {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseSpace();\n if (s1 as any === peg$FAILED) {\n s1 = null;\n }\n if (s1 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 35) {\n s2 = peg$c3;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s2 as any !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n while (s5 as any !== peg$FAILED) {\n s4.push(s5);\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n }\n if (s4 as any !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c7(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseChordLyricsPair(): any {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseChord();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n s4 = peg$parseLyrics();\n while (s4 as any !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseLyrics();\n }\n if (s3 as any !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c8(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLyrics(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseLyricsChar();\n if (s2 as any !== peg$FAILED) {\n while (s2 as any !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseLyricsChar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c9(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseChord(): any {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseEscape();\n peg$silentFails--;\n if (s2 as any === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s2 = peg$c10;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s2 as any !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseChordChar();\n while (s4 as any !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseChordChar();\n }\n if (s3 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s4 = peg$c12;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s4 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c14(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseChordChar(): any {\n let s0, s1, s2, s3;\n\n if (peg$c15.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseEscape();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s3 = peg$c17;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c19();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c12;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c20();\n }\n s2 = s3;\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseMetaTernary(): any {\n let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = peg$parseMetaVariableName();\n if (s4 as any === peg$FAILED) {\n s4 = null;\n }\n if (s4 as any !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 as any !== peg$FAILED) {\n s4 = peg$parseMetaValueTest();\n if (s4 as any === peg$FAILED) {\n s4 = null;\n }\n if (s4 as any !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 as any !== peg$FAILED) {\n s6 = peg$parseMetaTernaryTrueFalseExpressions();\n if (s6 as any === peg$FAILED) {\n s6 = null;\n }\n if (s6 as any !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c24;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s8 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s3, s4, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaValueTest(): any {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c27;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseMetaTestValue();\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c29(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaTestValue(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseChar();\n if (s2 as any !== peg$FAILED) {\n while (s2 as any !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseChar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 as any !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseMetaTernaryTrueFalseExpressions(): any {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseMetaExpression();\n if (s3 as any !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 as any !== peg$FAILED) {\n s5 = peg$parseMetaTernaryFalseExpression();\n if (s5 as any === peg$FAILED) {\n s5 = null;\n }\n if (s5 as any !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c32(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaTernaryFalseExpression(): any {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseMetaExpression();\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c33(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaVariableName(): any {\n let s0, s1;\n\n s0 = [];\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s1 as any !== peg$FAILED) {\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMetaExpression(): any {\n let s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parseChar();\n if (s3 as any !== peg$FAILED) {\n while (s3 as any !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseChar();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 as any !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 as any === peg$FAILED) {\n s1 = peg$parseMetaTernary();\n }\n if (s1 as any !== peg$FAILED) {\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parseChar();\n if (s3 as any !== peg$FAILED) {\n while (s3 as any !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseChar();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 as any !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n if (s1 as any === peg$FAILED) {\n s1 = peg$parseMetaTernary();\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLyricsChar(): any {\n let s0, s1;\n\n s0 = peg$parseChar();\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 93) {\n s1 = peg$c12;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20();\n }\n s0 = s1;\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c36();\n }\n s0 = s1;\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 125) {\n s1 = peg$c24;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s1 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c37();\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseChar(): any {\n let s0, s1, s2, s3;\n\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseEscape();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s3 = peg$c17;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c19();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s3 = peg$c30;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c36();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c40();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c12;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c20();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s3 = peg$c41;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c43();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c24;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c37();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 37) {\n s3 = peg$c44;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c46();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s3 = peg$c3;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c47();\n }\n s2 = s3;\n }\n }\n }\n }\n }\n }\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseTag(): any {\n let s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c41;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = peg$parseTagName();\n if (s4 as any !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n } else {\n s3 = s4;\n }\n if (s3 as any !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 as any !== peg$FAILED) {\n s5 = peg$parseTagColonWithValue();\n if (s5 as any === peg$FAILED) {\n s5 = null;\n }\n if (s5 as any !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 as any !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c24;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s7 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c48(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagColonWithValue(): any {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c49;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 as any !== peg$FAILED) {\n s3 = peg$parseTagValue();\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c51(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagName(): any {\n let s0, s1;\n\n s0 = [];\n if (peg$c52.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c53); }\n }\n if (s1 as any !== peg$FAILED) {\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n if (peg$c52.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c53); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagValue(): any {\n let s0, s1;\n\n s0 = [];\n s1 = peg$parseTagValueChar();\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseTagValueChar();\n }\n\n return s0;\n }\n\n function peg$parseTagValueChar(): any {\n let s0, s1, s2, s3;\n\n if (peg$c54.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s0 as any === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseEscape();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s3 = peg$c17;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c19();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c24;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c37();\n }\n s2 = s3;\n if (s2 as any === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s3 = peg$c41;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s3 as any !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c43();\n }\n s2 = s3;\n }\n }\n if (s2 as any !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parse_(): any {\n let s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c57.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n if (peg$c57.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n }\n peg$silentFails--;\n if (s0 as any === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c56); }\n }\n\n return s0;\n }\n\n function peg$parseSpace(): any {\n let s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c60.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s1 as any !== peg$FAILED) {\n while (s1 as any !== peg$FAILED) {\n s0.push(s1);\n if (peg$c60.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 as any === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c59); }\n }\n\n return s0;\n }\n\n function peg$parseNewLine(): any {\n let s0;\n\n s0 = peg$parseCarriageReturn();\n if (s0 as any === peg$FAILED) {\n s0 = peg$parseLineFeed();\n if (s0 as any === peg$FAILED) {\n s0 = peg$parseCarriageReturnLineFeed();\n }\n }\n\n return s0;\n }\n\n function peg$parseCarriageReturnLineFeed(): any {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseCarriageReturn();\n if (s1 as any !== peg$FAILED) {\n s2 = peg$parseLineFeed();\n if (s2 as any !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLineFeed(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 10) {\n s0 = peg$c62;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n\n return s0;\n }\n\n function peg$parseCarriageReturn(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 13) {\n s0 = peg$c64;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n\n return s0;\n }\n\n function peg$parseEscape(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 92) {\n s0 = peg$c17;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n\n return s0;\n }\n\n function peg$parsePound(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 35) {\n s0 = peg$c3;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n\n return s0;\n }\n\n function peg$parsePercent(): any {\n let s0;\n\n if (input.charCodeAt(peg$currPos) === 37) {\n s0 = peg$c44;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nexport interface IParseOptions {\n filename?: string;\n startRule?: string;\n tracer?: any;\n [key: string]: any;\n}\nexport type ParseFunction = (input: string, options?: IParseOptions) => any;\nexport const parse: ParseFunction = peg$parse;\n","import Literal from './chord_sheet/chord_pro/literal';\nimport Song from './chord_sheet/song';\nimport ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Tag from './chord_sheet/tag';\nimport Comment from './chord_sheet/comment';\nimport Ternary from './chord_sheet/chord_pro/ternary';\nimport { presence } from './utilities';\n\nconst CHORD_SHEET = 'chordSheet';\nconst CHORD_LYRICS_PAIR = 'chordLyricsPair';\nconst TAG = 'tag';\nconst COMMENT = 'comment';\nconst TERNARY = 'ternary';\nconst LINE = 'line';\n\n/**\n * Serializes a song into een plain object, and deserializes the serialized object back into a {@link Song}\n */\nclass ChordSheetSerializer {\n song?: Song;\n\n /**\n * Serializes the chord sheet to a plain object, which can be converted to any format like JSON, XML etc\n * Can be deserialized using {@link deserialize}\n * @returns object A plain JS object containing all chord sheet data\n */\n serialize(song) {\n return {\n type: CHORD_SHEET,\n lines: song.lines.map((line) => this.serializeLine(line)),\n };\n }\n\n serializeLine(line) {\n return {\n type: LINE,\n items: line.items.map((item) => this.serializeItem(item)),\n };\n }\n\n serializeItem(item) {\n if (item instanceof Tag) {\n return this.serializeTag(item);\n }\n\n if (item instanceof ChordLyricsPair) {\n return this.serializeChordLyricsPair(item);\n }\n\n if (item instanceof Ternary) {\n return this.serializeTernary(item);\n }\n\n if (item instanceof Literal) {\n return this.serializeLiteral(item);\n }\n\n throw new Error(`Don't know how to serialize ${item.constructor.name}`);\n }\n\n serializeTag(tag) {\n return {\n type: TAG,\n name: tag.originalName,\n value: tag.value,\n };\n }\n\n serializeChordLyricsPair(chordLyricsPair) {\n return {\n type: CHORD_LYRICS_PAIR,\n chords: chordLyricsPair.chords,\n lyrics: chordLyricsPair.lyrics,\n };\n }\n\n serializeTernary(ternary) {\n return {\n type: TERNARY,\n variable: ternary.variable,\n valueTest: ternary.valueTest,\n trueExpression: this.serializeExpression(ternary.trueExpression),\n falseExpression: this.serializeExpression(ternary.falseExpression),\n };\n }\n\n serializeLiteral(literal) {\n return literal.string;\n }\n\n serializeExpression(expression) {\n return expression?.map((part) => this.serializeItem(part));\n }\n\n /**\n * Deserializes a song that has been serialized using {@link serialize}\n * @param {object} serializedSong The serialized song\n * @returns {Song} The deserialized song\n */\n deserialize(serializedSong) {\n this.parseAstComponent(serializedSong);\n return this.song;\n }\n\n parseAstComponent(astComponent) {\n if (!astComponent) {\n return null;\n }\n\n if (typeof astComponent === 'string') {\n return new Literal(astComponent);\n }\n\n const { type } = astComponent;\n\n switch (type) {\n case CHORD_SHEET:\n return this.parseChordSheet(astComponent);\n case CHORD_LYRICS_PAIR:\n return this.parseChordLyricsPair(astComponent);\n case TAG:\n return this.parseTag(astComponent);\n case COMMENT:\n return this.parseComment(astComponent);\n case TERNARY:\n return this.parseTernary(astComponent);\n default:\n console.warn(`Unhandled AST component \"${type}\"`, astComponent);\n }\n\n return null;\n }\n\n parseChordSheet(astComponent) {\n const { lines } = astComponent;\n this.song = new Song();\n lines.forEach((line) => this.parseLine(line));\n }\n\n parseLine(astComponent) {\n const { items } = astComponent;\n this.song.addLine();\n\n items.forEach((item) => {\n const parsedItem = this.parseAstComponent(item);\n this.song.addItem(parsedItem);\n });\n }\n\n parseChordLyricsPair(astComponent) {\n const { chords, lyrics } = astComponent;\n return new ChordLyricsPair(chords, lyrics);\n }\n\n parseTag(astComponent) {\n const {\n name,\n value,\n location: { offset = null, line = null, column = null } = {},\n } = astComponent;\n return new Tag(name, value, { line, column, offset });\n }\n\n parseComment(astComponent) {\n const { comment } = astComponent;\n return new Comment(comment);\n }\n\n parseTernary(astComponent) {\n const {\n variable,\n valueTest,\n trueExpression,\n falseExpression,\n location: { offset = null, line = null, column = null } = {},\n } = astComponent;\n\n return new Ternary({\n variable,\n valueTest,\n trueExpression: this.parseExpression(trueExpression),\n falseExpression: this.parseExpression(falseExpression),\n offset,\n line,\n column,\n });\n }\n\n parseExpression(expression) {\n const parsedParts = (expression || []).map((part) => this.parseAstComponent(part));\n return presence(parsedParts);\n }\n}\n\nexport default ChordSheetSerializer;\n","class Literal {\n string: string;\n\n constructor(expression) {\n this.string = expression;\n }\n\n evaluate() {\n return this.string;\n }\n\n isRenderable() {\n return true;\n }\n\n clone() {\n return new Literal(this.string);\n }\n}\n\nexport default Literal;\n","import Line from './line';\nimport Paragraph from './paragraph';\nimport Key from '../key';\nimport ChordLyricsPair from './chord_lyrics_pair';\nimport { deprecate, pushNew } from '../utilities';\nimport Metadata from './metadata';\nimport ParserWarning from '../parser/parser_warning';\nimport MetadataAccessors from './metadata_accessors';\nimport Item from './item';\n\nimport {\n CHORUS, NONE, TAB, VERSE,\n} from '../constants';\n\nimport Tag, {\n END_OF_CHORUS,\n END_OF_TAB,\n END_OF_VERSE,\n START_OF_CHORUS,\n START_OF_TAB,\n START_OF_VERSE,\n TRANSPOSE,\n NEW_KEY,\n CAPO,\n KEY,\n} from './tag';\n\ninterface MapItemsCallback {\n (_item: Item): Item | null;\n}\n\ninterface MapLinesCallback {\n (_line: Line): Line | null;\n}\n\n/**\n * Represents a song in a chord sheet. Currently a chord sheet can only have one song.\n */\nclass Song extends MetadataAccessors {\n /**\n * The {@link Line} items of which the song consists\n * @member {Line[]}\n */\n lines: Line[] = [];\n\n /**\n * The song's metadata. When there is only one value for an entry, the value is a string. Else, the value is\n * an array containing all unique values for the entry.\n * @type {Metadata}\n */\n metadata: Metadata;\n\n currentLine?: Line = null;\n\n warnings: ParserWarning[] = [];\n\n sectionType: string = NONE;\n\n currentKey?: string = null;\n\n transposeKey?: string = null;\n\n /**\n * Creates a new {Song} instance\n * @param metadata {Object|Metadata} predefined metadata\n */\n constructor(metadata = {}) {\n super();\n this.metadata = new Metadata(metadata);\n }\n\n get previousLine() {\n const count = this.lines.length;\n\n if (count >= 2) {\n return this.lines[count - 2];\n }\n\n return null;\n }\n\n /**\n * Returns the song lines, skipping the leading empty lines (empty as in not rendering any content). This is useful\n * if you want to skip the \"header lines\": the lines that only contain meta data.\n * @returns {Line[]} The song body lines\n */\n get bodyLines() {\n return this.selectRenderableItems('_bodyLines', 'lines');\n }\n\n /**\n * Returns the song paragraphs, skipping the paragraphs that only contain empty lines\n * (empty as in not rendering any content)\n * @see {@link bodyLines}\n * @returns {Paragraph[]}\n */\n get bodyParagraphs() {\n return this.selectRenderableItems('_bodyParagraphs', 'paragraphs');\n }\n\n selectRenderableItems(targetProp, sourceProp) {\n if (this[targetProp] === undefined) {\n this[targetProp] = [...this[sourceProp]];\n const collection = this[targetProp];\n\n while (collection.length > 0 && !collection[0].hasRenderableItems()) {\n this[targetProp].shift();\n }\n }\n\n return this[targetProp];\n }\n\n chords(chr) {\n this.currentLine.chords(chr);\n }\n\n lyrics(chr) {\n this.ensureLine();\n this.currentLine.lyrics(chr);\n }\n\n addLine(line?: Line) {\n this.currentLine = line || pushNew(this.lines, Line);\n this.setCurrentLineType(this.sectionType);\n this.currentLine.transposeKey = this.transposeKey ?? this.currentKey;\n this.currentLine.key = this.currentKey || this.metadata.getSingle(KEY);\n return this.currentLine;\n }\n\n /**\n * The {@link Paragraph} items of which the song consists\n * @member {Paragraph[]}\n */\n get paragraphs() {\n let currentParagraph = new Paragraph();\n const paragraphs = [currentParagraph];\n\n this.lines.forEach((line) => {\n if (line.isEmpty()) {\n currentParagraph = new Paragraph();\n paragraphs.push(currentParagraph);\n } else if (line.hasRenderableItems()) {\n currentParagraph.addLine(line);\n }\n });\n\n return paragraphs;\n }\n\n setCurrentLineType(sectionType) {\n this.currentLine.type = sectionType;\n }\n\n ensureLine() {\n if (this.currentLine === null) {\n this.addLine();\n }\n }\n\n addTag(tagContents: string | Tag) {\n const tag = Tag.parse(tagContents);\n\n if (tag.isMetaTag()) {\n this.setMetadata(tag.name, tag.value);\n } else if (tag.name === TRANSPOSE) {\n this.transposeKey = tag.value;\n } else if (tag.name === NEW_KEY) {\n this.currentKey = tag.value;\n } else {\n this.setSectionTypeFromTag(tag);\n }\n\n this.ensureLine();\n this.currentLine.addTag(tag);\n\n return tag;\n }\n\n setSectionTypeFromTag(tag) {\n switch (tag.name) {\n case START_OF_CHORUS:\n this.startSection(CHORUS, tag);\n break;\n\n case END_OF_CHORUS:\n this.endSection(CHORUS, tag);\n break;\n\n case START_OF_TAB:\n this.startSection(TAB, tag);\n break;\n\n case END_OF_TAB:\n this.endSection(TAB, tag);\n break;\n\n case START_OF_VERSE:\n this.startSection(VERSE, tag);\n break;\n\n case END_OF_VERSE:\n this.endSection(VERSE, tag);\n break;\n\n default:\n break;\n }\n }\n\n startSection(sectionType, tag) {\n this.checkCurrentSectionType(NONE, tag);\n this.sectionType = sectionType;\n this.setCurrentLineType(sectionType);\n }\n\n endSection(sectionType, tag) {\n this.checkCurrentSectionType(sectionType, tag);\n this.sectionType = NONE;\n }\n\n checkCurrentSectionType(sectionType, tag) {\n if (this.sectionType !== sectionType) {\n this.addWarning(`Unexpected tag {${tag.originalName}, current section is: ${this.sectionType}`, tag);\n }\n }\n\n addWarning(message, { line, column }) {\n const warning = new ParserWarning(message, line, column);\n this.warnings.push(warning);\n }\n\n addItem(item) {\n if (item instanceof Tag) {\n this.addTag(item);\n } else {\n this.ensureLine();\n this.currentLine.addItem(item);\n }\n }\n\n /**\n * Returns a deep clone of the song\n * @returns {Song} The cloned song\n */\n clone() {\n return this.mapItems((item) => item);\n }\n\n setMetadata(name, value) {\n this.metadata.add(name, value);\n }\n\n /**\n * The song's metadata. Please use {@link metadata} instead.\n * @deprecated\n * @returns {@link Metadata} The metadata\n */\n get metaData() {\n deprecate('metaData has been deprecated, please use metadata instead (notice the lowercase \"d\")');\n return this.metadata;\n }\n\n getMetadata(name) {\n return this.metadata[name] || null;\n }\n\n /**\n * Returns a copy of the song with the key value set to the specified key. It changes:\n * - the value for `key` in the {@link metadata} set\n * - any existing `key` directive\n * @param {number|null} key the key. Passing `null` will:\n * - remove the current key from {@link metadata}\n * - remove any `key` directive\n * @returns {Song} The changed song\n */\n setKey(key): Song {\n return this.changeMetadata(KEY, key ? key.toString() : key);\n }\n\n /**\n * Returns a copy of the song with the key value set to the specified capo. It changes:\n * - the value for `capo` in the {@link metadata} set\n * - any existing `capo` directive\n * @param {number|null} capo the capo. Passing `null` will:\n * - remove the current key from {@link metadata}\n * - remove any `capo` directive\n * @returns {Song} The changed song\n */\n setCapo(capo) {\n return this.changeMetadata(CAPO, capo);\n }\n\n private setDirective(name: string, value: string | null) {\n if (value === null) {\n return this.removeItem((item) => item instanceof Tag && item.name === name);\n }\n\n return this.updateItem(\n (item) => item instanceof Tag && item.name === name,\n (item) => item.set({ value }),\n (song) => song.insertDirective(name, value),\n );\n }\n\n /**\n * Transposes the song by the specified delta. It will:\n * - transpose all chords, see: {@link Chord#transpose}\n * - transpose the song key in {@link metadata}\n * - update any existing `key` directive\n * @param {number} delta The number of semitones (positive or negative) to transpose with\n * @param {Object} [options={}] options\n * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n * @returns {Song} The transposed song\n */\n transpose(delta: number, { normalizeChordSuffix = false } = {}): Song {\n const wrappedKey = Key.wrap(this.key);\n let transposedKey = null;\n let song = (this as Song);\n\n if (wrappedKey) {\n transposedKey = wrappedKey.transpose(delta);\n song = song.setKey(transposedKey);\n }\n\n return song.mapItems((item) => {\n if (item instanceof ChordLyricsPair) {\n return (item as ChordLyricsPair).transpose(delta, transposedKey, { normalizeChordSuffix });\n }\n\n return item;\n });\n }\n\n /**\n * Transposes the song up by one semitone. It will:\n * - transpose all chords, see: {@link Chord#transpose}\n * - transpose the song key in {@link metadata}\n * - update any existing `key` directive\n * @param {Object} [options={}] options\n * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n * @returns {Song} The transposed song\n */\n transposeUp({ normalizeChordSuffix = false } = {}): Song {\n return this.transpose(1, { normalizeChordSuffix });\n }\n\n /**\n * Transposes the song down by one semitone. It will:\n * - transpose all chords, see: {@link Chord#transpose}\n * - transpose the song key in {@link metadata}\n * - update any existing `key` directive\n * @param {Object} [options={}] options\n * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n * @returns {Song} The transposed song\n */\n transposeDown({ normalizeChordSuffix = false } = {}): Song {\n return this.transpose(-1, { normalizeChordSuffix });\n }\n\n /**\n * Returns a copy of the song with the key set to the specified key. It changes:\n * - the value for `key` in the {@link metadata} set\n * - any existing `key` directive\n * - all chords, those are transposed according to the distance between the current and the new key\n * @param {string} newKey The new key.\n * @returns {Song} The changed song\n */\n changeKey(newKey: string | Key) {\n const transpose = this.getTransposeDistance(newKey);\n\n const updatedSong = this.mapItems((item) => {\n if (item instanceof Tag && item.name === KEY) {\n return item.set({ value: newKey });\n }\n\n if (item instanceof ChordLyricsPair) {\n return item.transpose(transpose, newKey);\n }\n\n return item;\n });\n\n this.setKey(newKey);\n return updatedSong;\n }\n\n getTransposeDistance(newKey: string | Key) {\n const wrappedKey = Key.wrap(this.key);\n\n if (!wrappedKey) {\n throw new Error(`\nCannot change song key, the original key is unknown.\n\nEither ensure a key directive is present in the song (when using chordpro):\n \\`{key: C}\\`\n\nOr set the song key before changing key:\n \\`song.setKey('C');\\``.substring(1));\n }\n\n return wrappedKey.distanceTo(newKey);\n }\n\n /**\n * Returns a copy of the song with the directive value set to the specified value.\n * - when there is a matching directive in the song, it will update the directive\n * - when there is no matching directive, it will be inserted\n * If `value` is `null` it will act as a delete, any directive matching `name` will be removed.\n * @param {string} name The directive name\n * @param {string | null} value The value to set, or `null` to remove the directive\n */\n changeMetadata(name: string, value: string | null) {\n const updatedSong = this.setDirective(name, value);\n updatedSong.metadata.set(name, value);\n return updatedSong;\n }\n\n private insertDirective(name, value, { after = null } = {}) {\n const insertIndex = this.lines.findIndex((line) => (\n line.items.some((item) => (\n !(item instanceof Tag) || (after && item instanceof Tag && item.name === after)\n ))\n ));\n\n const newLine = new Line();\n newLine.addTag(name, value);\n\n const clonedSong = this.clone();\n const { lines } = clonedSong;\n clonedSong.lines = [...lines.slice(0, insertIndex), newLine, ...lines.slice(insertIndex)];\n\n return clonedSong;\n }\n\n /**\n * Change the song contents inline. Return a new {@link Item} to replace it. Return `null` to remove it.\n * @example\n * // transpose all chords:\n * song.mapItems((item) => {\n * if (item instanceof ChordLyricsPair) {\n * return item.transpose(2, 'D');\n * }\n *\n * return item;\n * });\n * @param {MapItemsCallback} func the callback function\n * @returns {Song} the changed song\n */\n mapItems(func: MapItemsCallback) {\n const clonedSong = new Song();\n\n this.lines.forEach((line) => {\n clonedSong.addLine();\n\n line.items.forEach((item) => {\n const changedItem = func(item);\n\n if (changedItem) {\n clonedSong.addItem(changedItem);\n }\n });\n });\n\n return clonedSong;\n }\n\n /**\n * Change the song contents inline. Return a new {@link Line} to replace it. Return `null` to remove it.\n * @example\n * // remove lines with only Tags:\n * song.mapLines((line) => {\n * if (line.items.every(item => item instanceof Tag)) {\n * return null;\n * }\n *\n * return line;\n * });\n * @param {MapLinesCallback} func the callback function\n * @returns {Song} the changed song\n */\n mapLines(func: MapLinesCallback) {\n const clonedSong = new Song();\n\n this.lines.forEach((line) => {\n const changedLine = func(line);\n\n if (changedLine) {\n clonedSong.addLine();\n changedLine.items.forEach((item) => clonedSong.addItem(item));\n }\n });\n\n return clonedSong;\n }\n\n private updateItem(findCallback, updateCallback, notFoundCallback) {\n let found = false;\n\n const updatedSong = this.mapItems((item) => {\n if (findCallback(item)) {\n found = true;\n return updateCallback(item);\n }\n\n return item;\n });\n\n if (!found) {\n return notFoundCallback(updatedSong);\n }\n\n return updatedSong;\n }\n\n private removeItem(callback) {\n return this.mapLines((line) => {\n const { items } = line;\n const index = items.findIndex(callback);\n\n if (index === -1) {\n return line;\n }\n\n if (items.length === 1) {\n return null;\n }\n\n return line.set({\n items: [...items.slice(0, index), ...items.slice(index + 1)],\n });\n });\n }\n}\n\nexport default Song;\n","import ChordLyricsPair from './chord_lyrics_pair';\nimport Tag from './tag';\nimport Comment from './comment';\nimport { CHORUS, NONE, VERSE } from '../constants';\nimport Item from './item';\n\n/**\n * Represents a line in a chord sheet, consisting of items of type ChordLyricsPair or Tag\n */\nclass Line {\n /**\n * The items ({@link ChordLyricsPair} or {@link Tag} or {@link Comment}) of which the line consists\n * @member\n * @type {Array.<(ChordLyricsPair|Tag|Comment)>}\n */\n items: Item[] = [];\n\n /**\n * The line type, This is set by the ChordProParser when it read tags like {start_of_chorus} or {start_of_verse}\n * Values can be {@link VERSE}, {@link CHORUS} or {@link NONE}\n * @member\n * @type {string}\n */\n type: 'verse' | 'chorus' | 'none' = NONE;\n\n /**\n * @ignore\n * @type {ChordLyricsPair}\n */\n currentChordLyricsPair: ChordLyricsPair = null;\n\n /**\n * @ignore\n * @type {string|null}\n */\n key?: string = null;\n\n /**\n * @ignore\n * @type {string|null}\n */\n transposeKey?: string = null;\n\n constructor({ type, items }: { type: 'verse' | 'chorus' | 'none', items: Item[]} = { type: NONE, items: [] }) {\n this.type = type;\n this.items = items;\n }\n\n /**\n * Indicates whether the line contains any items\n * @returns {boolean}\n */\n isEmpty() {\n return this.items.length === 0;\n }\n\n /**\n * Adds an item ({@link ChordLyricsPair} or {@link Tag}) to the line\n * @param {ChordLyricsPair|Tag} item The item to be added\n */\n addItem(item: Item) {\n if (item instanceof Tag) {\n this.addTag(item);\n } else if (item instanceof ChordLyricsPair) {\n this.addChordLyricsPair(item);\n } else if (item instanceof Comment) {\n this.addComment(item);\n } else {\n this.items.push(item);\n }\n }\n\n /**\n * Indicates whether the line contains items that are renderable\n * @returns {boolean}\n */\n hasRenderableItems() {\n return this.items.some((item) => item.isRenderable());\n }\n\n /**\n * Returns a deep copy of the line and all of its items\n * @returns {Line}\n */\n clone() {\n return this.mapItems(null);\n }\n\n mapItems(func) {\n const clonedLine = new Line();\n\n clonedLine.items = this.items\n .map((item) => {\n const clonedItem = item.clone();\n return func ? func(clonedItem) : clonedItem;\n })\n .filter((item) => item);\n\n clonedLine.type = this.type;\n return clonedLine;\n }\n\n /**\n * Indicates whether the line type is {@link VERSE}\n * @returns {boolean}\n */\n isVerse() {\n return this.type === VERSE;\n }\n\n /**\n * Indicates whether the line type is {@link CHORUS}\n * @returns {boolean}\n */\n isChorus() {\n return this.type === CHORUS;\n }\n\n /**\n * Indicates whether the line contains items that are renderable. Please use {@link hasRenderableItems}\n * @deprecated\n * @returns {boolean}\n */\n hasContent() {\n return this.hasRenderableItems();\n }\n\n addChordLyricsPair(chords = null, lyrics = null) {\n if (chords instanceof ChordLyricsPair) {\n this.currentChordLyricsPair = chords;\n } else {\n this.currentChordLyricsPair = new ChordLyricsPair(chords, lyrics);\n }\n\n this.items.push(this.currentChordLyricsPair);\n return this.currentChordLyricsPair;\n }\n\n ensureChordLyricsPair() {\n if (!this.currentChordLyricsPair) {\n this.addChordLyricsPair();\n }\n }\n\n chords(chr) {\n this.ensureChordLyricsPair();\n this.currentChordLyricsPair.chords += chr;\n }\n\n lyrics(chr) {\n this.ensureChordLyricsPair();\n this.currentChordLyricsPair.lyrics += chr;\n }\n\n addTag(name, value = null) {\n const tag = (name instanceof Tag) ? name : new Tag(name, value);\n this.items.push(tag);\n return tag;\n }\n\n addComment(content) {\n const comment = (content instanceof Comment) ? content : new Comment(content);\n this.items.push(comment);\n return comment;\n }\n\n set(properties) {\n return new Line(\n {\n type: this.type,\n items: this.items,\n ...properties,\n },\n );\n }\n}\n\nexport default Line;\n","import Chord from '../chord';\nimport Key from '../key';\n\n/**\n * Represents a chord with the corresponding (partial) lyrics\n */\nclass ChordLyricsPair {\n chords: string;\n\n lyrics: string;\n\n /**\n * Initialises a ChordLyricsPair\n * @param {string} chords The chords\n * @param {string} lyrics The lyrics\n */\n constructor(chords = '', lyrics = '') {\n /**\n * The chords\n * @member\n * @type {string}\n */\n this.chords = chords || '';\n\n /**\n * The lyrics\n * @member\n * @type {string}\n */\n this.lyrics = lyrics || '';\n }\n\n /**\n * Indicates whether a ChordLyricsPair should be visible in a formatted chord sheet (except for ChordPro sheets)\n * @returns {boolean}\n */\n isRenderable() {\n return true;\n }\n\n /**\n * Returns a deep copy of the ChordLyricsPair, useful when programmatically transforming a song\n * @returns {ChordLyricsPair}\n */\n clone() {\n return new ChordLyricsPair(this.chords, this.lyrics);\n }\n\n toString() {\n return `ChordLyricsPair(chords=${this.chords}, lyrics=${this.lyrics})`;\n }\n\n set(properties): ChordLyricsPair {\n return new ChordLyricsPair(\n properties.chords || this.chords,\n properties.lyrics || this.lyrics,\n );\n }\n\n setLyrics(lyrics: string) {\n return this.set({ lyrics });\n }\n\n transpose(delta: number, key: string | Key | null = null, { normalizeChordSuffix = false } = {}): ChordLyricsPair {\n const chordObj = Chord.parse(this.chords);\n\n if (chordObj) {\n let transposedChord = chordObj.transpose(delta);\n\n if (key) {\n transposedChord = transposedChord.normalize(key, { normalizeSuffix: normalizeChordSuffix });\n }\n\n return this.set({ chords: transposedChord.toString() });\n }\n\n return this.clone();\n }\n}\n\nexport default ChordLyricsPair;\n","import Key from './key';\nimport SUFFIX_MAPPING from './normalize_mappings/suffix-normalize-mapping';\n\nimport {\n NUMERAL,\n NUMERIC,\n ROMAN_NUMERALS,\n SYMBOL,\n} from './constants';\n\nimport {\n deprecate,\n isBlank,\n parseWithRegexes,\n presence,\n} from './utilities';\n\nfunction normalizeChordSuffix(suffix) {\n if (SUFFIX_MAPPING[suffix] === '[blank]') {\n return null;\n }\n\n return SUFFIX_MAPPING[suffix] || suffix;\n}\n\nconst chordRegex = (\n /^(?<base>[A-G])(?<modifier>#|b)?(?<suffix>[^/\\s]*)(\\/(?<bassBase>[A-G])(?<bassModifier>#|b)?)?$/i\n);\n\nconst numericChordRegex = (\n /^(?<modifier>#|b)?(?<base>[1-7])(?<suffix>[^/\\s]*)(\\/(?<bassModifier>#|b)?(?<bassBase>[0-7]))?$/\n);\n\nconst sortedNumerals = [...ROMAN_NUMERALS].sort((numeralA, numeralB) => numeralB.length - numeralA.length);\n\nconst numerals = [\n ...sortedNumerals,\n ...sortedNumerals.map((numeral) => numeral.toLowerCase()),\n].join('|');\n\nconst numeralChordRegex = (\n // eslint-disable-next-line max-len\n new RegExp(`^(?<modifier>#|b)?(?<base>${numerals})(?<suffix>[^/\\\\s]*)(\\\\/(?<bassModifier>#|b)?(?<bassBase>${numerals}))?$`)\n);\n\nconst regexes = [numericChordRegex, numeralChordRegex, chordRegex];\n\n/**\n * Represents a Chord, consisting of a root, suffix (quality) and bass\n */\nclass Chord {\n root: Key;\n\n suffix?: string;\n\n bass?: Key;\n\n /**\n * Tries to parse a chord string into a chord\n * @param chordString the chord string, eg `Esus4/G#` or `1sus4/#3`\n * @returns {null|Chord}\n */\n static parse(chordString) {\n return parseWithRegexes(chordString, Chord, regexes);\n }\n\n /**\n * Returns a deep copy of the chord\n * @returns {Chord}\n */\n clone() {\n return this.set({});\n }\n\n /**\n * Converts the chord to a chord symbol, using the supplied key as a reference.\n * For example, a numeric chord `#4` with reference key `E` will return the chord symbol `A#`.\n * When the chord is already a chord symbol, it will return a clone of the object.\n * @param {Key|string} [key=null] the reference key\n * @returns {Chord} the chord symbol\n */\n toChordSymbol(key = null) {\n if (this.isChordSymbol()) {\n return this.clone();\n }\n\n const keyObj = Key.wrap(key);\n const rootKey = this.root.toChordSymbol(keyObj).normalizeEnharmonics(keyObj);\n\n let chordSymbolChord = new Chord({\n suffix: normalizeChordSuffix(this.suffix),\n root: rootKey,\n bass: this.bass?.toChordSymbol(keyObj).normalizeEnharmonics(rootKey),\n });\n\n if (this.root.isMinor()) {\n chordSymbolChord = chordSymbolChord.makeMinor();\n }\n\n return chordSymbolChord;\n }\n\n /**\n * Converts the chord to a chord symbol string, using the supplied key as a reference.\n * For example, a numeric chord `#4` with reference key `E` will return the chord symbol `A#`.\n * When the chord is already a chord symbol, it will return a string version of the chord.\n * @param {Key|string} [key=null] the reference key\n * @returns {string} the chord symbol string\n * @see {toChordSymbol}\n */\n toChordSymbolString(key = null) {\n return this.toChordSymbol(key).toString();\n }\n\n /**\n * Determines whether the chord is a chord symbol\n * @returns {boolean}\n */\n isChordSymbol() {\n return this.is(SYMBOL);\n }\n\n /**\n * Converts the chord to a numeric chord, using the supplied key as a reference.\n * For example, a chord symbol A# with reference key E will return the numeric chord #4.\n * @param {Key|string} [key=null] the reference key\n * @returns {Chord} the numeric chord\n */\n toNumeric(key = null) {\n if (this.isNumeric()) {\n return this.clone();\n }\n\n if (this.isNumeral()) {\n return this.set({\n root: this.root.toNumeric(),\n bass: this.bass?.toNumeric(),\n });\n }\n\n const keyObj = Key.wrap(key);\n\n return new Chord({\n suffix: normalizeChordSuffix(this.suffix),\n root: this.root.toNumeric(keyObj),\n bass: this.bass?.toNumeric(keyObj),\n });\n }\n\n /**\n * Converts the chord to a numeral chord, using the supplied key as a reference.\n * For example, a chord symbol A# with reference key E will return the numeral chord #IV.\n * @param {Key|string|null} key the reference key. The key is required when converting a chord symbol\n * @returns {Chord} the numeral chord\n */\n toNumeral(key = null) {\n if (this.isNumeral()) {\n return this.clone();\n }\n\n if (this.isNumeric()) {\n return this.set({\n root: this.root.toNumeral(),\n bass: this.bass?.toNumeral(),\n });\n }\n\n const keyObj = Key.wrap(key);\n\n return new Chord({\n suffix: normalizeChordSuffix(this.suffix),\n root: this.root.toNumeral(keyObj),\n bass: this.bass?.toNumeral(keyObj),\n });\n }\n\n /**\n * Converts the chord to a numeral chord string, using the supplied kye as a reference.\n * For example, a chord symbol A# with reference key E will return the numeral chord #4.\n * @param {Key|string} [key=null] the reference key\n * @returns {string} the numeral chord string\n * @see {toNumeral}\n */\n toNumeralString(key = null) {\n return this.toNumeral(key).toString();\n }\n\n /**\n * Determines whether the chord is numeric\n * @returns {boolean}\n */\n isNumeric() {\n return this.is(NUMERIC);\n }\n\n /**\n * Converts the chord to a numeric chord string, using the supplied kye as a reference.\n * For example, a chord symbol A# with reference key E will return the numeric chord #4.\n * @param {Key|string} [key=null] the reference key\n * @returns {string} the numeric chord string\n * @see {toNumeric}\n */\n toNumericString(key = null) {\n return this.toNumeric(key).toString();\n }\n\n /**\n * Determines whether the chord is a numeral\n * @returns {boolean}\n */\n isNumeral() {\n return this.is(NUMERAL);\n }\n\n /**\n * Converts the chord to a string, eg `Esus4/G#` or `1sus4/#3`\n * @returns {string} the chord string\n */\n toString() {\n const chordString = this.root.toString({ showMinor: false }) + (this.suffix || '');\n\n if (this.bass) {\n return `${chordString}/${this.bass.toString()}`;\n }\n\n return chordString;\n }\n\n /**\n * Normalizes the chord root and bass notes:\n * - Fb becomes E\n * - Cb becomes B\n * - B# becomes C\n * - E# becomes F\n * - 4b becomes 3\n * - 1b becomes 7\n * - 7# becomes 1\n * - 3# becomes 4\n *\n * Besides that it normalizes the suffix if `normalizeSuffix` is `true`.\n * For example, `sus2` becomes `2`, `sus4` becomes `sus`.\n * All suffix normalizations can be found in `src/normalize_mappings/suffix-mapping.txt`.\n * @param {Key|string} [key=null] the key to normalize to\n * @param {Object} [options={}] options\n * @param {boolean} [options.normalizeSuffix=true] whether to normalize the chord suffix after transposing\n * @returns {Chord} the normalized chord\n */\n normalize(key = null, { normalizeSuffix = true } = {}) {\n const suffix = normalizeSuffix ? normalizeChordSuffix(this.suffix) : this.suffix;\n\n if (isBlank(key)) {\n return this.process('normalize').set({ suffix });\n }\n\n return this.set({\n suffix,\n root: this.root.normalizeEnharmonics(key),\n bass: this.bass ? this.bass.normalizeEnharmonics(this.root.toString()) : null,\n });\n }\n\n /**\n * Switches to the specified modifier\n * @param newModifier the modifier to use: `'#'` or `'b'`\n * @returns {Chord} the new, changed chord\n */\n useModifier(newModifier) {\n return this.process('useModifier', newModifier);\n }\n\n /**\n * Transposes the chord up by 1 semitone. Eg. A becomes A#, Eb becomes E\n * @returns {Chord} the new, transposed chord\n */\n transposeUp() {\n return this.process('transposeUp');\n }\n\n /**\n * Transposes the chord down by 1 semitone. Eg. A# becomes A, E becomes Eb\n * @returns {Chord} the new, transposed chord\n */\n transposeDown() {\n return this.process('transposeDown');\n }\n\n /**\n * Transposes the chord by the specified number of semitones\n * @param delta de number of semitones\n * @returns {Chord} the new, transposed chord\n */\n transpose(delta) {\n return this.process('transpose', delta);\n }\n\n constructor(\n {\n base = null,\n modifier = null,\n suffix = null,\n bassBase = null,\n bassModifier = null,\n root = null,\n bass = null,\n },\n ) {\n this.suffix = presence(suffix);\n const isMinor = suffix && suffix[0] === 'm' && suffix.substring(0, 3).toLowerCase() !== 'maj';\n this.root = root || new Key({ note: base, modifier, minor: isMinor });\n\n if (bass) {\n this.bass = bass;\n } else if (bassBase) {\n this.bass = new Key({ note: bassBase, modifier: bassModifier, minor: isMinor });\n } else {\n this.bass = null;\n }\n }\n\n makeMinor() {\n if (!this.suffix || this.suffix[0] !== 'm') {\n return this.set({\n suffix: `m${this.suffix || ''}`,\n });\n }\n\n return this.clone();\n }\n\n set(properties) {\n return new Chord(\n {\n root: this.root.clone(),\n suffix: this.suffix,\n bass: this.bass?.clone(),\n ...properties,\n },\n );\n }\n\n private get rootNote() {\n return this.root.note.note;\n }\n\n private process(func, arg = null) {\n return this.set({\n root: this.root[func](arg),\n bass: this.bass ? this.bass[func](arg) : null,\n });\n }\n\n private is(type) {\n return this.root.is(type) && (!this.bass || this.bass.is(type));\n }\n}\n\n/**\n * Tries to parse a chord string into a chord\n * @param chordString the chord string, eg Esus4/G# or 1sus4/#3\n * @deprecated Please use {@link Chord.parse} instead\n * @returns {null|Chord}\n */\nexport function parseChord(chordString) {\n deprecate('parseChord() is deprecated, please use Chord.parse() instead');\n return Chord.parse(chordString);\n}\n\nexport default Chord;\n","import Note from './note';\nimport { NUMERAL, NUMERIC, SYMBOL } from './constants';\nimport ENHARMONIC_MAPPING from './normalize_mappings/enharmonic-normalize';\nimport { parseWithRegexes } from './utilities';\n\nconst FLAT = 'b';\nconst SHARP = '#';\n\nconst MODIFIER_TRANSPOSITION = {\n [SHARP]: 1,\n [FLAT]: -1,\n};\n\nconst symbolKeyRegex = (\n /^(?<note>[A-G])(?<modifier>#|b)?(?<minor>m)?$/i\n);\n\nconst numericKeyRegex = (\n /^(?<modifier>#|b)?(?<note>[1-7])(?<minor>m)?$/\n);\n\nconst numeralKeyRegex = (\n /^(?<modifier>#|b)?(?<note>I{1,3}|IV|VI{0,2}|i{1,3}|iv|vi{0,2})$/\n);\n\nconst regexes = [symbolKeyRegex, numericKeyRegex, numeralKeyRegex];\n\nclass Key {\n note: Note;\n\n modifier?: string = null;\n\n minor: boolean = false;\n\n static parse(keyString) {\n return parseWithRegexes(keyString, Key, regexes);\n }\n\n static wrap(keyStringOrObject) {\n if (keyStringOrObject instanceof Key) {\n return keyStringOrObject;\n }\n\n return this.parse(keyStringOrObject);\n }\n\n static toString(keyStringOrObject) {\n return `${Key.wrap(keyStringOrObject)}`;\n }\n\n static distance(oneKey, otherKey) {\n return this.wrap(oneKey).distanceTo(otherKey);\n }\n\n distanceTo(otherKey) {\n const otherKeyObj = Key.wrap(otherKey);\n let key = this.useModifier(otherKeyObj.modifier);\n let delta = 0;\n\n while (!key.equals(otherKeyObj) && delta < 20) {\n key = key.transposeUp().useModifier(otherKeyObj.modifier);\n delta += 1;\n }\n\n return delta;\n }\n\n constructor({ note, modifier = null, minor = false }) {\n this.note = (note instanceof Note) ? note : Note.parse(note);\n this.modifier = modifier || null;\n this.minor = !!minor || false;\n\n if (this.minor) {\n this.note.minor = true;\n }\n }\n\n isMinor() {\n return this.minor || this.note.isMinor();\n }\n\n clone() {\n return this.set({});\n }\n\n toChordSymbol(key) {\n if (this.is(SYMBOL)) {\n return this.clone();\n }\n\n const transposeDistance = this.note.getTransposeDistance(key.minor) + (MODIFIER_TRANSPOSITION[this.modifier] || 0);\n\n return key.transpose(transposeDistance).normalize().useModifier(key.modifier);\n }\n\n toChordSymbolString(key) {\n return this.toChordSymbol(key).toString();\n }\n\n is(type) {\n return this.note.is(type);\n }\n\n isNumeric() {\n return this.is(NUMERIC);\n }\n\n isChordSymbol() {\n return this.is(SYMBOL);\n }\n\n isNumeral() {\n return this.is(NUMERAL);\n }\n\n equals({ note, modifier = null }) {\n return this.note.equals(note) && this.modifier === modifier;\n }\n\n toNumeric(key: Key = null) {\n if (this.isNumeric()) {\n return this.clone();\n }\n\n if (this.isNumeral()) {\n return this.set({\n note: this.note.toNumeric(),\n });\n }\n\n return this.transposeNoteUpToKey(1, key);\n }\n\n toNumericString(key = null) {\n return this.toNumeric(key).toString();\n }\n\n toNumeral(key = null) {\n if (this.isNumeral()) {\n return this.clone();\n }\n\n if (this.isNumeric()) {\n return this.set({\n note: this.note.toNumeral(),\n });\n }\n\n return this.transposeNoteUpToKey('I', key);\n }\n\n toNumeralString(key = null) {\n return this.toNumeral(key).toString();\n }\n\n toString({ showMinor = true } = {}) {\n switch (this.note.type) {\n case SYMBOL:\n return this.formatChordSymbolString(showMinor);\n case NUMERIC:\n return this.formatNumericString(showMinor);\n case NUMERAL:\n return this.formatNumeralString();\n default:\n throw new Error(`Unexpected note type ${this.note.type}`);\n }\n }\n\n private formatChordSymbolString(showMinor: boolean) {\n return `${this.note}${this.modifier || ''}${this.minor && showMinor ? 'm' : ''}`;\n }\n\n private formatNumericString(showMinor: boolean) {\n return `${this.modifier || ''}${this.note}${this.minor && showMinor ? 'm' : ''}`;\n }\n\n private formatNumeralString() {\n return `${this.modifier || ''}${this.note}`;\n }\n\n transpose(delta) {\n if (delta === 0) {\n return this;\n }\n\n const originalModifier = this.modifier;\n let transposedKey = this.clone();\n const func = (delta < 0) ? 'transposeDown' : 'transposeUp';\n\n for (let i = 0, count = Math.abs(delta); i < count; i += 1) {\n transposedKey = transposedKey[func]();\n }\n\n return transposedKey.useModifier(originalModifier);\n }\n\n transposeUp() {\n if (this.modifier === FLAT) {\n return this.set({ modifier: null });\n }\n\n if (this.note.isOneOf(3, 7, 'E', 'B')) {\n return this.set({\n note: this.note.up(),\n });\n }\n\n if (this.modifier === SHARP) {\n return this.set({\n note: this.note.up(),\n modifier: null,\n });\n }\n\n return this.set({ modifier: SHARP });\n }\n\n transposeDown() {\n if (this.modifier === SHARP) {\n return this.set({ modifier: null });\n }\n\n if (this.note.isOneOf(1, 4, 'C', 'F')) {\n return this.set({\n note: this.note.down(),\n });\n }\n\n if (this.modifier === FLAT) {\n return this.set({\n note: this.note.down(),\n modifier: null,\n });\n }\n\n return this.set({ modifier: FLAT });\n }\n\n useModifier(newModifier) {\n if (this.modifier === FLAT && newModifier === SHARP) {\n return this.set({\n note: this.note.down(),\n modifier: SHARP,\n });\n }\n\n if (this.modifier === SHARP && newModifier === FLAT) {\n return this.set({\n note: this.note.up(),\n modifier: FLAT,\n });\n }\n\n return this.clone();\n }\n\n normalize() {\n if (this.modifier === SHARP && this.note.isOneOf(3, 7, 'E', 'B')) {\n return this.set({\n note: this.note.up(),\n modifier: null,\n });\n }\n\n if (this.modifier === FLAT && this.note.isOneOf(1, 4, 'C', 'F')) {\n return this.set({\n note: this.note.down(),\n modifier: null,\n });\n }\n\n return this.clone();\n }\n\n normalizeEnharmonics(key: Key | string) {\n if (key) {\n const rootKeyString = Key.wrap(key).toString({ showMinor: true });\n const enharmonics = ENHARMONIC_MAPPING[rootKeyString];\n const thisKeyString = this.toString({ showMinor: false });\n\n if (enharmonics && enharmonics[thisKeyString]) {\n return Key.parse(enharmonics[thisKeyString]);\n }\n }\n return this.clone();\n }\n\n private set(attributes) {\n return new Key({\n note: this.note.clone(),\n modifier: this.modifier,\n minor: !!this.minor,\n ...attributes,\n });\n }\n\n private transposeNoteUpToKey(note: number | string, key: Key) {\n let numericKey = new Key({ note });\n let symbolKey = key.clone();\n const reference = this.clone().normalize().useModifier(key.modifier).normalizeEnharmonics(key);\n\n while (!symbolKey.equals(reference)) {\n numericKey = numericKey.transposeUp().useModifier(key.modifier);\n symbolKey = symbolKey.transposeUp().normalize().useModifier(key.modifier).normalizeEnharmonics(key);\n }\n\n return numericKey;\n }\n}\n\nexport default Key;\n","import {\n NUMERAL, NUMERIC, ROMAN_NUMERALS, SYMBOL,\n} from './constants';\n\nconst A = 'A'.charCodeAt(0);\nconst G = 'G'.charCodeAt(0);\n\nconst TRANSPOSE_DISTANCE_MAJOR = [null, 0, 2, 4, 5, 7, 9, 11];\nconst TRANSPOSE_DISTANCE_MINOR = [null, 0, 2, 3, 5, 7, 8, 11];\n\nfunction keyToCharCode(key) {\n return key.toUpperCase().charCodeAt(0);\n}\n\nfunction clamp(note, min, max) {\n let newNote = note;\n\n if (newNote < min) {\n newNote += 7;\n } else if (newNote > max) {\n newNote -= 7;\n }\n\n return newNote;\n}\n\nfunction numeralToNumber(numeral) {\n for (let i = 0, count = ROMAN_NUMERALS.length; i < count; i += 1) {\n const romanNumeral = ROMAN_NUMERALS[i];\n\n if (romanNumeral === numeral || romanNumeral.toLowerCase() === numeral) {\n return i + 1;\n }\n }\n\n return null;\n}\n\nfunction numberToNumeral(number) {\n return ROMAN_NUMERALS[number - 1];\n}\n\nclass Note {\n _note: string;\n\n type: string;\n\n minor: boolean;\n\n constructor({ note, type, minor = false }) {\n this._note = note;\n this.type = type;\n this.minor = minor;\n }\n\n static parse(note) {\n if (/^[A-Ga-g]$/.test(note)) {\n return new Note({ note: note.toUpperCase(), type: SYMBOL });\n }\n\n if (/^[1-7]$/.test(note)) {\n return new Note({ note: parseInt(note, 10), type: NUMERIC });\n }\n\n const romanNumeralValue = numeralToNumber(note);\n\n if (romanNumeralValue) {\n return new Note({\n note: romanNumeralValue,\n type: NUMERAL,\n minor: (note.toLowerCase() === note),\n });\n }\n\n throw new Error(`Invalid note ${note}`);\n }\n\n toNumeral() {\n if (this.isNumeral()) {\n return this.clone();\n }\n\n if (this.isNumeric()) {\n return this.set({ type: NUMERAL });\n }\n\n throw new Error(`Converting a ${this.type} note to numeral is not supported`);\n }\n\n toNumeric() {\n if (this.isNumeric()) {\n return this.clone();\n }\n\n if (this.isNumeral()) {\n return this.set({ type: NUMERIC });\n }\n\n throw new Error(`Converting a ${this.type} note to numeric is not supported`);\n }\n\n isMinor() {\n return this.minor;\n }\n\n equals(otherNote) {\n return this._note === otherNote._note && this.type === otherNote.type && this.minor === otherNote.minor;\n }\n\n clone() {\n return this.set({});\n }\n\n up() {\n return this.change(1);\n }\n\n down() {\n return this.change(-1);\n }\n\n isOneOf(...options) {\n return options.includes(this._note);\n }\n\n isNumeric() {\n return this.is(NUMERIC);\n }\n\n isChordSymbol() {\n return this.is(SYMBOL);\n }\n\n isNumeral() {\n return this.is(NUMERAL);\n }\n\n is(noteType) {\n return this.type === noteType;\n }\n\n getTransposeDistance(minorKey) {\n if (minorKey) {\n return TRANSPOSE_DISTANCE_MINOR[this._note];\n }\n\n return TRANSPOSE_DISTANCE_MAJOR[this._note];\n }\n\n change(delta) {\n if (this.isChordSymbol()) {\n let charCode;\n charCode = keyToCharCode(this._note);\n charCode += delta;\n charCode = clamp(charCode, A, G);\n\n return this.set({ note: String.fromCharCode(charCode) });\n }\n\n let newNote = clamp(this._note + delta, 1, 7);\n\n if (newNote < 1) {\n newNote += 7;\n } else if (newNote > 7) {\n newNote -= 7;\n }\n\n return this.set({ note: newNote });\n }\n\n get note() {\n if (this.isNumeral()) {\n const numeral = numberToNumeral(this._note);\n\n if (this.isMinor()) {\n return numeral.toLowerCase();\n }\n\n return numeral;\n }\n\n return this._note;\n }\n\n toString() {\n switch (this.type) {\n case NUMERAL:\n return `${this.minor ? this.note.toLowerCase() : this.note.toUpperCase()}`;\n default:\n return `${this.note}`;\n }\n }\n\n private set(attributes) {\n return new Note({\n note: this._note,\n type: this.type,\n minor: this.minor,\n ...attributes,\n });\n }\n}\n\nexport default Note;\n","/**\n * Used to mark a paragraph as verse\n * @constant\n * @type {string}\n */\nexport const VERSE = 'verse';\n\n/**\n * Used to mark a paragraph as chorus\n * @constant\n * @type {string}\n */\nexport const CHORUS = 'chorus';\n\n/**\n * Used to mark a paragraph as not containing a line marked with a type\n * @constant\n * @type {string}\n */\nexport const NONE = 'none';\n\n/**\n * Used to mark a paragraph as containing lines with both verse and chorus type\n * @constant\n * @type {string}\n */\nexport const INDETERMINATE = 'indeterminate';\n\n/**\n * Used to mark a paragraph as tab\n * @constant\n * @type {string}\n */\nexport const TAB = 'tab';\n\nexport const SYMBOL = 'symbol';\nexport const NUMERIC = 'numeric';\nexport const NUMERAL = 'numeral';\n\nexport const ROMAN_NUMERALS = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII'];\n","export default {\n 'Ab': {\n 'B': 'Cb',\n },\n 'Cb': {\n 'B': 'Cb',\n 'A#': 'Bb',\n 'E': 'Fb',\n },\n 'C': {\n 'C#': 'Db',\n 'D#': 'Eb',\n 'F#': 'Gb',\n 'G#': 'Ab',\n 'A#': 'Bb',\n },\n 'C#': {\n 'D#': 'Eb',\n 'A#': 'Bb',\n },\n 'Db': {\n 'B': 'Cb',\n 'F#': 'Gb',\n },\n 'D': {\n 'D#': 'Eb',\n 'A#': 'Bb',\n },\n 'E': {\n 'Ab': 'G#',\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'F': {\n 'A#': 'Bb',\n 'F#': 'Gb',\n 'C#': 'Db',\n 'D#': 'Eb',\n 'G#': 'Ab',\n },\n 'F#': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'Gb': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'G#': 'Ab',\n 'B': 'Cb',\n 'E': 'Fb',\n },\n 'G': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'G#': 'Ab',\n },\n 'G#': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'Am': {\n 'Gb': 'G',\n 'G#': 'Ab',\n 'F#': 'Gb',\n 'C#': 'Db',\n 'D#': 'Eb',\n 'A#': 'Bb',\n },\n 'Bbm': {\n 'Cb': 'B',\n },\n 'Bm': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'C#m': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'Cm': {\n 'G#': 'Ab',\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'F#': 'Gb',\n 'C#': 'Db',\n },\n 'Dm': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'Em': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'F#m': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'Gb': 'F#',\n 'Ab': 'G#',\n 'Db': 'C#',\n },\n 'Fm': {\n 'G#': 'Ab',\n 'A#': 'Bb',\n 'D#': 'Eb',\n 'F#': 'Gb',\n 'C#': 'Db',\n },\n 'Gm': {\n 'G#': 'Ab',\n 'A#': 'Bb',\n 'D#': 'Eb',\n },\n 'G#m': {\n 'A#': 'Bb',\n 'D#': 'Eb',\n }\n}\n","export const pushNew = (collection, Klass) => {\n const newObject = new Klass();\n collection.push(newObject);\n return newObject;\n};\n\nexport const hasChordContents = (line) => line.items.some((item) => !!item.chords);\n\nexport const isEvaluatable = (item) => typeof item.evaluate === 'function';\n\nexport const padLeft = (str, length) => {\n let paddedString = str;\n for (let l = str.length; l < length; l += 1, paddedString += ' ');\n return paddedString;\n};\n\nexport const isPresent = (object) => object && object.length > 0;\n\nexport const isBlank = (object) => !isPresent(object);\n\nexport const presence = (object) => (isPresent(object) ? object : null);\n\nfunction dasherize(string) {\n return string.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n}\n\nexport function scopeCss(css, scope) {\n return Object\n .entries(css)\n .map(([selector, styles]) => {\n const rules = Object\n .entries(styles)\n .map(([property, value]) => `${dasherize(property)}: ${value};`)\n .join('\\n ');\n\n const scopedSelector = `${scope} ${selector}`.trim();\n\n return `\n${scopedSelector} {\n ${rules}\n}`.substring(1);\n })\n .join('\\n\\n');\n}\n\nexport function deprecate(message) {\n try {\n throw new Error(`DEPRECATION: ${message}`);\n } catch (e) {\n const proc = globalThis.process;\n\n if (typeof proc === 'object' && typeof proc.emitWarning === 'function') {\n proc.emitWarning(`${message}\\n${e.stack}`);\n } else {\n console.warn(`${message}\\n${e.stack}`);\n }\n }\n}\n\nexport function isEmptyString(string) {\n return (string === null || string === undefined || string === '');\n}\n\nexport function parseWithRegexes(string: string, constructor, regexes) {\n if (isEmptyString(string)) {\n return null;\n }\n\n for (let i = 0, count = regexes.length; i < count; i += 1) {\n const match = string.match(regexes[i]);\n\n if (match) {\n return new constructor(match.groups);\n }\n }\n\n return null;\n}\n","const mapping: Record<string, string> = {\n \"2\": \"2\",\n \"4\": \"sus\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"9\": \"9\",\n \"11\": \"11\",\n \"13\": \"13\",\n \"42\": \"4(2)\",\n \"69\": \"6(9)\",\n \"sus#42\": \"sus#42\",\n \"sus(no5)\": \"sus(no5)\",\n \"sus4\": \"sus\",\n \"sus\": \"sus\",\n \"ma9(-5)\": \"ma9(b5)\",\n \"ma9-5\": \"ma9(b5)\",\n \"ma9b5\": \"ma9(b5)\",\n \"maj9(b5)\": \"ma9(b5)\",\n \"+9(-5)\": \"ma9(b5)\",\n \"M9-5\": \"ma9(b5)\",\n \"+9b5\": \"ma9(b5)\",\n \"+9(b5)\": \"ma9(b5)\",\n \"maj9(-5)\": \"ma9(b5)\",\n \"maj9-5\": \"ma9(b5)\",\n \"maj9b5\": \"ma9(b5)\",\n \"ma9(b5)\": \"ma9(b5)\",\n \"ma9(-13+5)\": \"ma9(b13#5)\",\n \"ma9-13+5\": \"ma9(b13#5)\",\n \"ma7b13#5\": \"ma9(b13#5)\",\n \"maj9(b13#5)\": \"ma9(b13#5)\",\n \"+9(-13+5)\": \"ma9(b13#5)\",\n \"M9-13+5\": \"ma9(b13#5)\",\n \"+9b13#5\": \"ma9(b13#5)\",\n \"+9(b13#5)\": \"ma9(b13#5)\",\n \"maj9(-13+5)\": \"ma9(b13#5)\",\n \"maj9-13+5\": \"ma9(b13#5)\",\n \"maj9b13#5\": \"ma9(b13#5)\",\n \"ma9(b13#5)\": \"ma9(b13#5)\",\n \"ma9(-13)\": \"ma9(b13)\",\n \"ma9-13\": \"ma9(b13)\",\n \"ma7b13\": \"ma7(b13)\",\n \"maj9(b13)\": \"ma9(b13)\",\n \"+9(-13)\": \"ma9(b13)\",\n \"M9-13\": \"ma9(b13)\",\n \"+9b13\": \"ma9(b13)\",\n \"+9(b13)\": \"ma9(b13)\",\n \"maj9(-13)\": \"ma9(b13)\",\n \"maj9-13\": \"ma9(b13)\",\n \"maj9b13\": \"ma9(b13)\",\n \"ma9(b13)\": \"ma9(b13)\",\n \"ma9(13)\": \"ma9(13)\",\n \"ma9(+5)\": \"ma9(#5)\",\n \"ma9+5\": \"ma9(#5)\",\n \"ma9#5\": \"ma9(#5)\",\n \"maj9(#5)\": \"ma9(#5)\",\n \"+9(+5)\": \"ma9(#5)\",\n \"M9+5\": \"ma9(#5)\",\n \"+9#5\": \"ma9(#5)\",\n \"+9(#5)\": \"ma9(#5)\",\n \"maj9(+5)\": \"ma9(#5)\",\n \"maj9+5\": \"ma9(#5)\",\n \"maj9#5\": \"ma9(#5)\",\n \"ma9(#5)\": \"ma9(#5)\",\n \"ma9(#4)\": \"ma9(#4)\",\n \"ma9(+11+5)\": \"ma9(#11#5)\",\n \"ma9+11+5\": \"ma9(#11#5)\",\n \"ma7#11#5\": \"ma13(#11#5)\",\n \"maj9(#11#5)\": \"ma9(#11#5)\",\n \"+9(+11+5)\": \"ma9(#11#5)\",\n \"M9+11+5\": \"ma9(#11#5)\",\n \"+9#11#5\": \"ma9(#11#5)\",\n \"+9(#11#5)\": \"ma9(#11#5)\",\n \"maj9(+11+5)\": \"ma9(#11#5)\",\n \"maj9+11+5\": \"ma9(#11#5)\",\n \"maj9#11#5\": \"ma9(#11#5)\",\n \"ma9(#11#5)\": \"ma9(#11#5)\",\n \"ma9(+11)\": \"ma9(#11)\",\n \"ma9+11\": \"ma9(#11)\",\n \"ma7#11\": \"ma13(#11)\",\n \"maj9(#11)\": \"ma9(#11)\",\n \"+9(+11)\": \"ma9(#11)\",\n \"M9+11\": \"ma9(#11)\",\n \"+9#11\": \"ma9(#11)\",\n \"+9(#11)\": \"ma9(#11)\",\n \"maj9(+11)\": \"ma9(#11)\",\n \"maj9+11\": \"ma9(#11)\",\n \"maj9#11\": \"ma9(#11)\",\n \"ma9(#11)\": \"ma9(#11)\",\n \"maj9\": \"ma9\",\n \"M9\": \"ma9\",\n \"+9\": \"ma9\",\n \"ma9\": \"ma9\",\n \"9(#7)\": \"ma9\",\n \"ma7(no3)\": \"ma7(no3)\",\n \"ma7(-9)\": \"ma7(b9)\",\n \"ma7-9\": \"ma7(b9)\",\n \"ma7b9\": \"ma7(b9)\",\n \"maj7(b9)\": \"ma7(b9)\",\n \"+7(-9)\": \"ma7(b9)\",\n \"M7-9\": \"ma7(b9)\",\n \"+7b9\": \"ma7(b9)\",\n \"+7(b9)\": \"ma7(b9)\",\n \"maj7(-9)\": \"ma7(b9)\",\n \"maj7-9\": \"ma7(b9)\",\n \"maj7b9\": \"ma7(b9)\",\n \"ma7(b9)\": \"ma7(b9)\",\n \"ma7(-5)\": \"ma7(b5)\",\n \"ma7-5\": \"ma7(b5)\",\n \"ma7b5\": \"ma7(b5)\",\n \"maj7(b5)\": \"ma7(b5)\",\n \"+7(-5)\": \"ma7(b5)\",\n \"M7-5\": \"ma7(b5)\",\n \"+7b5\": \"ma7(b5)\",\n \"+7(b5)\": \"ma7(b5)\",\n \"maj7(-5)\": \"ma7(b5)\",\n \"maj7-5\": \"ma7(b5)\",\n \"maj7b5\": \"ma7(b5)\",\n \"ma7(b5)\": \"ma7(b5)\",\n \"ma7(-13)\": \"ma7(b13)\",\n \"ma7-13\": \"ma7(b13)\",\n \"maj7(b13)\": \"ma7(b13)\",\n \"+7(-13)\": \"ma7(b13)\",\n \"M7-13\": \"ma7(b13)\",\n \"+7b13\": \"ma7(b13)\",\n \"+7(b13)\": \"ma7(b13)\",\n \"maj7(-13)\": \"ma7(b13)\",\n \"maj7-13\": \"ma7(b13)\",\n \"maj7b13\": \"ma7(b13)\",\n \"ma7(b13)\": \"ma7(b13)\",\n \"ma7(+9)\": \"ma7(#9)\",\n \"ma7+9\": \"ma7(#9)\",\n \"ma7#9\": \"ma7(#9)\",\n \"maj7(#9)\": \"ma7(#9)\",\n \"+7(+9)\": \"ma7(#9)\",\n \"M7+9\": \"ma7(#9)\",\n \"+7#9\": \"ma7(#9)\",\n \"+7(#9)\": \"ma7(#9)\",\n \"maj7(+9)\": \"ma7(#9)\",\n \"maj7+9\": \"ma7(#9)\",\n \"maj7#9\": \"ma7(#9)\",\n \"ma7(#9)\": \"ma7(#9)\",\n \"aug(maj7)\": \"ma7(#5)\",\n \"aug(ma7)\": \"ma7(#5)\",\n \"aug(+7)\": \"ma7(#5)\",\n \"aug(M7)\": \"ma7(#5)\",\n \"ma7(+5)\": \"ma7(#5)\",\n \"ma7+5\": \"ma7(#5)\",\n \"ma7#5\": \"ma7(#5)\",\n \"maj7(#5)\": \"ma7(#5)\",\n \"+7(+5)\": \"ma7(#5)\",\n \"M7+5\": \"ma7(#5)\",\n \"+7#5\": \"ma7(#5)\",\n \"+7(#5)\": \"ma7(#5)\",\n \"maj7(+5)\": \"ma7(#5)\",\n \"maj7+5\": \"ma7(#5)\",\n \"maj7#5\": \"ma7(#5)\",\n \"ma7(#5)\": \"ma7(#5)\",\n \"ma7(#4)\": \"ma7(#4)\",\n \"ma7(+11)\": \"ma7(#11)\",\n \"ma7+11\": \"ma7(#11)\",\n \"maj7(#11)\": \"ma7(#11)\",\n \"+7(+11)\": \"ma7(#11)\",\n \"M7+11\": \"ma7(#11)\",\n \"+7#11\": \"ma7(#11)\",\n \"+7(#11)\": \"ma7(#11)\",\n \"maj7(+11)\": \"ma7(#11)\",\n \"maj7+11\": \"ma7(#11)\",\n \"maj7#11\": \"ma7(#11)\",\n \"ma7(#11)\": \"ma7(#11)\",\n \"(triangle)\": \"ma7\",\n \"maj7\": \"ma7\",\n \"Maj7\": \"ma7\",\n \"M7\": \"ma7\",\n \"#7\": \"ma7\",\n \"+7\": \"ma7\",\n \"ma7\": \"ma7\",\n \"ma69\": \"ma6(9)\",\n \"ma6(9)\": \"ma6(9)\",\n \"ma6\": \"ma6\",\n \"ma13(-9+5)\": \"ma13(b9#5)\",\n \"ma13-9+5\": \"ma13(b9#5)\",\n \"ma7b9#5\": \"ma13(b9#5)\",\n \"maj13(b9#5)\": \"ma13(b9#5)\",\n \"+13(-9+5)\": \"ma13(b9#5)\",\n \"M13-9+5\": \"ma13(b9#5)\",\n \"+13b9#5\": \"ma13(b9#5)\",\n \"+13(b9#5)\": \"ma13(b9#5)\",\n \"maj13(-9+5)\": \"ma13(b9#5)\",\n \"maj13-9+5\": \"ma13(b9#5)\",\n \"maj13b9#5\": \"ma13(b9#5)\",\n \"ma13(b9#5)\": \"ma13(b9#5)\",\n \"ma13(-9)\": \"ma13(b9)\",\n \"ma13-9\": \"ma13(b9)\",\n \"ma13b9\": \"ma13(b9)\",\n \"maj13(b9)\": \"ma13(b9)\",\n \"+13(-9)\": \"ma13(b9)\",\n \"M13-9\": \"ma13(b9)\",\n \"+13b9\": \"ma13(b9)\",\n \"+13(b9)\": \"ma13(b9)\",\n \"maj13(-9)\": \"ma13(b9)\",\n \"maj13-9\": \"ma13(b9)\",\n \"maj13b9\": \"ma13(b9)\",\n \"ma13(b9)\": \"ma13(b9)\",\n \"ma13(-5)\": \"ma13(b5)\",\n \"ma13-5\": \"ma13(b5)\",\n \"ma13b5\": \"ma13(b5)\",\n \"maj13(b5)\": \"ma13(b5)\",\n \"+13(-5)\": \"ma13(b5)\",\n \"M13-5\": \"ma13(b5)\",\n \"+13b5\": \"ma13(b5)\",\n \"+13(b5)\": \"ma13(b5)\",\n \"maj13(-5)\": \"ma13(b5)\",\n \"maj13-5\": \"ma13(b5)\",\n \"maj13b5\": \"ma13(b5)\",\n \"ma13(b5)\": \"ma13(b5)\",\n \"ma13+9+5\": \"ma13(#9#5)\",\n \"ma13(+9+5)\": \"ma13(#9#5)\",\n \"ma7#9#5\": \"ma13(#9#5)\",\n \"maj13(#9#5)\": \"ma13(#9#5)\",\n \"+13+9+5\": \"ma13(#9#5)\",\n \"M13(+9+5)\": \"ma13(#9#5)\",\n \"+13#9#5\": \"ma13(#9#5)\",\n \"+13(#9#5)\": \"ma13(#9#5)\",\n \"maj13+9+5\": \"ma13(#9#5)\",\n \"maj13(+9+5)\": \"ma13(#9#5)\",\n \"maj13#9#5\": \"ma13(#9#5)\",\n \"ma13(#9#5)\": \"ma13(#9#5)\",\n \"ma13+9\": \"ma13(#9)\",\n \"ma13(+9)\": \"ma13(#9)\",\n \"ma13#9\": \"ma13(#9)\",\n \"maj13(#9)\": \"ma13(#9)\",\n \"+13+9\": \"ma13(#9)\",\n \"M13(+9)\": \"ma13(#9)\",\n \"+13#9\": \"ma13(#9)\",\n \"+13(#9)\": \"ma13(#9)\",\n \"maj13+9\": \"ma13(#9)\",\n \"maj13(+9)\": \"ma13(#9)\",\n \"maj13#9\": \"ma13(#9)\",\n \"ma13(#9)\": \"ma13(#9)\",\n \"ma13(+5)\": \"ma13(#5)\",\n \"ma13+5\": \"ma13(#5)\",\n \"ma13#5\": \"ma13(#5)\",\n \"maj13(#5)\": \"ma13(#5)\",\n \"+13(+5)\": \"ma13(#5)\",\n \"M13+5\": \"ma13(#5)\",\n \"+13#5\": \"ma13(#5)\",\n \"+13(#5)\": \"ma13(#5)\",\n \"maj13(+5)\": \"ma13(#5)\",\n \"maj13+5\": \"ma13(#5)\",\n \"maj13#5\": \"ma13(#5)\",\n \"ma13(#5)\": \"ma13(#5)\",\n \"ma13(+11+5)\": \"ma13(#11#5)\",\n \"ma13+11+5\": \"ma13(#11#5)\",\n \"maj13(#11#5)\": \"ma13(#11#5)\",\n \"+13(+11+5)\": \"ma13(#11#5)\",\n \"M13+11+5\": \"ma13(#11#5)\",\n \"+13#11#5\": \"ma13(#11#5)\",\n \"+13(#11#5)\": \"ma13(#11#5)\",\n \"maj13(+11+5)\": \"ma13(#11#5)\",\n \"maj13+11+5\": \"ma13(#11#5)\",\n \"maj13#11#5\": \"ma13(#11#5)\",\n \"ma13(#11#5)\": \"ma13(#11#5)\",\n \"ma13(+11)\": \"ma13(#11)\",\n \"ma13+11\": \"ma13(#11)\",\n \"maj13(#11)\": \"ma13(#11)\",\n \"+13(+11)\": \"ma13(#11)\",\n \"M13+11\": \"ma13(#11)\",\n \"+13#11\": \"ma13(#11)\",\n \"+13(#11)\": \"ma13(#11)\",\n \"maj13(+11)\": \"ma13(#11)\",\n \"maj13+11\": \"ma13(#11)\",\n \"maj13#11\": \"ma13(#11)\",\n \"ma13(#11)\": \"ma13(#11)\",\n \"M13\": \"ma13\",\n \"+13\": \"ma13\",\n \"ma13\": \"ma13\",\n \"13(#7)\": \"ma13\",\n \"ma11-9\": \"ma11(b9)\",\n \"ma11(-9)\": \"ma11(b9)\",\n \"ma11b9\": \"ma11(b9)\",\n \"maj11(b9)\": \"ma11(b9)\",\n \"+11-9\": \"ma11(b9)\",\n \"M11(-9)\": \"ma11(b9)\",\n \"+11b9\": \"ma11(b9)\",\n \"+11(b9)\": \"ma11(b9)\",\n \"maj11-9\": \"ma11(b9)\",\n \"maj11(-9)\": \"ma11(b9)\",\n \"maj11b9\": \"ma11(b9)\",\n \"ma11(b9)\": \"ma11(b9)\",\n \"ma11(-5)\": \"ma11(b5)\",\n \"ma11-5\": \"ma11(b5)\",\n \"ma11b5\": \"ma11(b5)\",\n \"maj11(b5)\": \"ma11(b5)\",\n \"+11(-5)\": \"ma11(b5)\",\n \"M11-5\": \"ma11(b5)\",\n \"+11b5\": \"ma11(b5)\",\n \"+11(b5)\": \"ma11(b5)\",\n \"maj11(-5)\": \"ma11(b5)\",\n \"maj11-5\": \"ma11(b5)\",\n \"maj11b5\": \"ma11(b5)\",\n \"ma11(b5)\": \"ma11(b5)\",\n \"ma11(-13)\": \"ma11(b13)\",\n \"ma11-13\": \"ma11(b13)\",\n \"ma11b13\": \"ma11(b13)\",\n \"maj11(b13)\": \"ma11(b13)\",\n \"+11(-13)\": \"ma11(b13)\",\n \"M11-13\": \"ma11(b13)\",\n \"+11b13\": \"ma11(b13)\",\n \"+11(b13)\": \"ma11(b13)\",\n \"maj11(-13)\": \"ma11(b13)\",\n \"maj11-13\": \"ma11(b13)\",\n \"maj11b13\": \"ma11(b13)\",\n \"ma11(b13)\": \"ma11(b13)\",\n \"ma11(+9)\": \"ma11(#9)\",\n \"ma11+9\": \"ma11(#9)\",\n \"ma11#9\": \"ma11(#9)\",\n \"maj11(#9)\": \"ma11(#9)\",\n \"+11(+9)\": \"ma11(#9)\",\n \"M11+9\": \"ma11(#9)\",\n \"+11#9\": \"ma11(#9)\",\n \"+11(#9)\": \"ma11(#9)\",\n \"maj11(+9)\": \"ma11(#9)\",\n \"maj11+9\": \"ma11(#9)\",\n \"maj11#9\": \"ma11(#9)\",\n \"ma11(#9)\": \"ma11(#9)\",\n \"ma11(+5)\": \"ma11(#5)\",\n \"ma11+5\": \"ma11(#5)\",\n \"ma11#5\": \"ma11(#5)\",\n \"maj11(#5)\": \"ma11(#5)\",\n \"+11(+5)\": \"ma11(#5)\",\n \"M11+5\": \"ma11(#5)\",\n \"+11#5\": \"ma11(#5)\",\n \"+11(#5)\": \"ma11(#5)\",\n \"maj11(+5)\": \"ma11(#5)\",\n \"maj11+5\": \"ma11(#5)\",\n \"maj11#5\": \"ma11(#5)\",\n \"ma11(#5)\": \"ma11(#5)\",\n \"M11\": \"ma11\",\n \"+11\": \"ma11\",\n \"ma11\": \"ma11\",\n \"11(+7)\": \"ma11\",\n \"11+7\": \"ma11\",\n \"11#7\": \"ma11\",\n \"11(#7)\": \"ma11\",\n \"m9M7\": \"m9(ma7)\",\n \"m9(M7)\": \"m9(ma7)\",\n \"m9(+7)\": \"m9(ma7)\",\n \"m9(maj7)\": \"m9(ma7)\",\n \"m9(ma7)\": \"m9(ma7)\",\n \"-9(-5)\": \"m9(b5)\",\n \"-9-5\": \"m11(b5)\",\n \"-9b5\": \"m9(b5)\",\n \"-9(b5)\": \"m9(b5)\",\n \"m9(-5)\": \"m9(b5)\",\n \"m9-5\": \"m9(b5)\",\n \"m9b5\": \"m9(b5)\",\n \"m9(b5)\": \"m9(b5)\",\n \"-9(-13)\": \"m9(b13)\",\n \"-9-13\": \"m9(b13)\",\n \"-9b13\": \"m9(b13)\",\n \"-9(b13)\": \"m9(b13)\",\n \"m9(-13)\": \"m9(b13)\",\n \"m9-13\": \"m9(b13)\",\n \"m9b13\": \"m9(b13)\",\n \"m9(b13)\": \"m9(b13)\",\n \"m9(#7)\": \"m9(#7)\",\n \"-9(+5)\": \"m9(#5)\",\n \"m9+5\": \"m11(#5)\",\n \"-9#5\": \"m9(#5)\",\n \"-9(#5)\": \"m9(#5)\",\n \"m9(+5)\": \"m9(#5)\",\n \"m9#5\": \"m9(#5)\",\n \"m9(#5)\": \"m9(#5)\",\n \"-9(+11)\": \"m9(#11)\",\n \"-9+11\": \"m9(#11)\",\n \"-9#11\": \"m9(#11)\",\n \"-9(#11)\": \"m9(#11)\",\n \"m9(+11)\": \"m9(#11)\",\n \"m9+11\": \"m9(#11)\",\n \"m9#11\": \"m9(#11)\",\n \"m9(#11)\": \"m9(#11)\",\n \"-9\": \"m9\",\n \"min9\": \"m9\",\n \"mi9\": \"m9\",\n \"m9\": \"m9\",\n \"m7sus\": \"m7sus4\",\n \"m7sus4\": \"m7sus4\",\n \"min7(no3)\": \"m7(no3)\",\n \"m7(no3)\": \"m7(no3)\",\n \"-7(-9)\": \"m7(b9)\",\n \"m7-9\": \"m7(b9)\",\n \"-7b9\": \"m7(b9)\",\n \"-7(b9)\": \"m7(b9)\",\n \"m7(-9)\": \"m7(b9)\",\n \"m7b9\": \"m7(b9)\",\n \"m7(b9)\": \"m7(b9)\",\n \"-7(-5)\": \"m7(b5)\",\n \"m7-5\": \"m7(b5)\",\n \"-7b5\": \"m7(b5)\",\n \"-7(b5)\": \"m7(b5)\",\n \"m7(-5)\": \"m7(b5)\",\n \"m7b5\": \"m7(b5)\",\n \"m7(b5)\": \"m7(b5)\",\n \"-7(-13)\": \"m7(b13)\",\n \"-7-13\": \"m7(b13)\",\n \"-7b13\": \"m7(b13)\",\n \"-7(b13)\": \"m7(b13)\",\n \"m7(-13)\": \"m7(b13)\",\n \"m7-13\": \"m7(b13)\",\n \"m7b13\": \"m7(b13)\",\n \"m7(b13)\": \"m7(b13)\",\n \"m7(add6)\": \"m7(6)\",\n \"m7(6)\": \"m7(6)\",\n \"m74\": \"m7(4)\",\n \"m7(4)\": \"m7(4)\",\n \"m7(add11)\": \"m7(4)\",\n \"m7(add4)\": \"m7(4)\",\n \"m7(11)\": \"m7(11)\",\n \"-7(+9)\": \"m7(#9)\",\n \"m7+9\": \"m7(#9)\",\n \"-7#9\": \"m7(#9)\",\n \"-7(#9)\": \"m7(#9)\",\n \"m7(+9)\": \"m7(#9)\",\n \"m7#9\": \"m7(#9)\",\n \"m7(#9)\": \"m7(#9)\",\n \"-7(+5)\": \"m7(#5)\",\n \"m7+5\": \"m7(#5)\",\n \"-7#5\": \"m7(#5)\",\n \"-7(#5)\": \"m7(#5)\",\n \"m7(+5)\": \"m7(#5)\",\n \"m7#5\": \"m7(#5)\",\n \"m7(#5)\": \"m7(#5)\",\n \"-7(+11)\": \"m7(#11)\",\n \"-7+11\": \"m7(#11)\",\n \"-7#11\": \"m7(#11)\",\n \"-7(#11)\": \"m7(#11)\",\n \"m7(+11)\": \"m7(#11)\",\n \"m7+11\": \"m7(#11)\",\n \"m7#11\": \"m7(#11)\",\n \"m7(#11)\": \"m7(#11)\",\n \"-7\": \"m7\",\n \"min7\": \"m7\",\n \"mi7\": \"m7\",\n \"m7\": \"m7\",\n \"m6+7\": \"m6(ma7)\",\n \"m6M7\": \"m6(ma7)\",\n \"m6(+7)\": \"m6(ma7)\",\n \"m6(M7)\": \"m6(ma7)\",\n \"m6(ma7)\": \"m6(ma7)\",\n \"m69\": \"m6(9)\",\n \"m6(add9)\": \"m6(9)\",\n \"m6add9\": \"m6(9)\",\n \"m6(9)\": \"m6(9)\",\n \"m6(#5)\": \"m6(#5)\",\n \"-6\": \"m6\",\n \"min6\": \"m6\",\n \"mi6\": \"m6\",\n \"m6\": \"m6\",\n \"m4\": \"m4\",\n \"madd2\": \"m2\",\n \"m(add2)\": \"m2\",\n \"min2\": \"m2\",\n \"mi2\": \"m2\",\n \"m2\": \"m2\",\n \"-13(-13)\": \"m13(b9)\",\n \"-13-13\": \"m13(b9)\",\n \"-13b13\": \"m13(b9)\",\n \"-13(b13)\": \"m13(b9)\",\n \"m13(-9)\": \"m13(b9)\",\n \"m13-9\": \"m13(b9)\",\n \"m13b9\": \"m13(b9)\",\n \"m13(b9)\": \"m13(b9)\",\n \"-13(-5)\": \"m13(b5)\",\n \"-13-5\": \"m13(b5)\",\n \"-13b5\": \"m13(b5)\",\n \"-13(b5)\": \"m13(b5)\",\n \"m13(-5)\": \"m13(b5)\",\n \"m13-5\": \"m13(b5)\",\n \"m13b5\": \"m13(b5)\",\n \"m13(b5)\": \"m13(b5)\",\n \"-13+9\": \"m13(#9)\",\n \"-13(+9)\": \"m13(#9)\",\n \"-13#9\": \"m13(#9)\",\n \"-13(#9)\": \"m13(#9)\",\n \"m13+9\": \"m13(#9)\",\n \"m13(+9)\": \"m13(#9)\",\n \"m13#9\": \"m13(#9)\",\n \"m13(#9)\": \"m13(#9)\",\n \"-13(+5)\": \"m13(#5)\",\n \"m13+5\": \"m13(#5)\",\n \"-13#5\": \"m13(#5)\",\n \"-13(#5)\": \"m13(#5)\",\n \"m13(+5)\": \"m13(#5)\",\n \"m13#5\": \"m13(#5)\",\n \"m13(#5)\": \"m13(#5)\",\n \"-13(+11)\": \"m13(#11)\",\n \"-13+11\": \"m13(#11)\",\n \"-13#11\": \"m13(#11)\",\n \"-13(#11)\": \"m13(#11)\",\n \"m13(+11)\": \"m13(#11)\",\n \"m13+11\": \"m13(#11)\",\n \"m13#11\": \"m13(#11)\",\n \"m13(#11)\": \"m13(#11)\",\n \"-13\": \"m13\",\n \"min13\": \"m13\",\n \"mi13\": \"m13\",\n \"m13\": \"m13\",\n \"-11-9-13\": \"m11(b9b13)\",\n \"-11(-9-13)\": \"m11(b9b13)\",\n \"-11b9b13\": \"m11(b9b13)\",\n \"-11(b9b13)\": \"m11(b9b13)\",\n \"m11-9-13\": \"m11(b9b13)\",\n \"m11(-9-13)\": \"m11(b9b13)\",\n \"m11b9b13\": \"m11(b9b13)\",\n \"m11(b9b13)\": \"m11(b9b13)\",\n \"-11(+5-9)\": \"m11(b9#5)\",\n \"m9+5-9\": \"m11(b9#5)\",\n \"-11#5b9\": \"m11(b9#5)\",\n \"-11(#5b9)\": \"m11(b9#5)\",\n \"m11(+5-9)\": \"m11(b9#5)\",\n \"m11+5-9\": \"m11(b9#5)\",\n \"m11#5b9\": \"m11(b9#5)\",\n \"m11(#5b9)\": \"m11(b9#5)\",\n \"m11(b9#5)\": \"m11(b9#5)\",\n \"-11-9\": \"m11(b9)\",\n \"-11(-9)\": \"m11(b9)\",\n \"-11b9\": \"m11(b9)\",\n \"-11(b9)\": \"m11(b9)\",\n \"m11-9\": \"m11(b9)\",\n \"m11(-9)\": \"m11(b9)\",\n \"m11b9\": \"m11(b9)\",\n \"m11(b9)\": \"m11(b9)\",\n \"-11(-5-9)\": \"m11(b5b9)\",\n \"-11-5-9\": \"m11(b5b9)\",\n \"-11b5b9\": \"m11(b5b9)\",\n \"-11(b5b9)\": \"m11(b5b9)\",\n \"m11(-5-9)\": \"m11(b5b9)\",\n \"m11-5-9\": \"m11(b5b9)\",\n \"m11b5b9\": \"m11(b5b9)\",\n \"m11(b5b9)\": \"m11(b5b9)\",\n \"-11-5-13\": \"m11(b5b13)\",\n \"-11(-5-13)\": \"m11(b5b13)\",\n \"-11b5b13\": \"m11(b5b13)\",\n \"-11(b5b13)\": \"m11(b5b13)\",\n \"m11-5-13\": \"m11(b5b13)\",\n \"m11(-5-13)\": \"m11(b5b13)\",\n \"m11b5b13\": \"m11(b5b13)\",\n \"m11(b5b13)\": \"m11(b5b13)\",\n \"-11(-5+9)\": \"m11(b5#9)\",\n \"-11-5+9\": \"m11(b5#9)\",\n \"-11b5#9\": \"m11(b5#9)\",\n \"-11(b5#9)\": \"m11(b5#9)\",\n \"m11(-5+9)\": \"m11(b5#9)\",\n \"m11-5+9\": \"m11(b5#9)\",\n \"m11b5#9\": \"m11(b5#9)\",\n \"m11(b5#9)\": \"m11(b5#9)\",\n \"-11(-5)\": \"m11(b5)\",\n \"-11b5\": \"m11(b5)\",\n \"-11(b5)\": \"m11(b5)\",\n \"m11(-5)\": \"m11(b5)\",\n \"m11-5\": \"m11(b5)\",\n \"m11b5\": \"m11(b5)\",\n \"m11(b5)\": \"m11(b5)\",\n \"-11(+5-13)\": \"m11(b13#5)\",\n \"-11+5-13\": \"m11(b13#5)\",\n \"-11#5b13\": \"m11(b13#5)\",\n \"-11(#5b13)\": \"m11(b13#5)\",\n \"m11(+5-13)\": \"m11(b13#5)\",\n \"m11+5-13\": \"m11(b13#5)\",\n \"m11#5b13\": \"m11(b13#5)\",\n \"m11(#5b13)\": \"m11(b13#5)\",\n \"m11(b13#5)\": \"m11(b13#5)\",\n \"-11(-13)\": \"m11(b13)\",\n \"-11-13\": \"m11(b13)\",\n \"-11b13\": \"m11(b13)\",\n \"-11(b13)\": \"m11(b13)\",\n \"m11(-13)\": \"m11(b13)\",\n \"m11-13\": \"m11(b13)\",\n \"m11b13\": \"m11(b13)\",\n \"m11(b13)\": \"m11(b13)\",\n \"-11(+9-13)\": \"m11(#9b13)\",\n \"-11+9-13\": \"m11(#9b13)\",\n \"-11#9b13\": \"m11(#9b13)\",\n \"-11(#9b13)\": \"m11(#9b13)\",\n \"m11(+9-13)\": \"m11(#9b13)\",\n \"m11+9-13\": \"m11(#9b13)\",\n \"m11#9b13\": \"m11(#9b13)\",\n \"m11(#9b13)\": \"m11(#9b13)\",\n \"-11(+5+9)\": \"m11(#9#5)\",\n \"m9+5+9\": \"m11(#9#5)\",\n \"-11#5#9\": \"m11(#9#5)\",\n \"-11(#5#9)\": \"m11(#9#5)\",\n \"m11(+5+9)\": \"m11(#9#5)\",\n \"m11+5+9\": \"m11(#9#5)\",\n \"m11#5#9\": \"m11(#9#5)\",\n \"m11(#5#9)\": \"m11(#9#5)\",\n \"m11(#9#5)\": \"m11(#9#5)\",\n \"-11(+9)\": \"m11(#9)\",\n \"-11+9\": \"m11(#9)\",\n \"-11#9\": \"m11(#9)\",\n \"-11(#9)\": \"m11(#9)\",\n \"m11(+9)\": \"m11(#9)\",\n \"m11+9\": \"m11(#9)\",\n \"m11#9\": \"m11(#9)\",\n \"m11(#9)\": \"m11(#9)\",\n \"-11(+5)\": \"m11(#5)\",\n \"-11#5\": \"m11(#5)\",\n \"-11(#5)\": \"m11(#5)\",\n \"m11(+5)\": \"m11(#5)\",\n \"m11+5\": \"m11(#5)\",\n \"m11#5\": \"m11(#5)\",\n \"m11(#5)\": \"m11(#5)\",\n \"-11\": \"m11\",\n \"min11\": \"m11\",\n \"mi11\": \"m11\",\n \"m11\": \"m11\",\n \"m(no5)\": \"m(no5)\",\n \"m+9\": \"m(ma9)\",\n \"m(+9)\": \"m(ma9)\",\n \"m(maj9)\": \"m(ma9)\",\n \"min(maj9)\": \"m(ma9)\",\n \"mi(maj9)\": \"m(ma9)\",\n \"m(M9)\": \"m(ma9)\",\n \"m(ma9)\": \"m(ma9)\",\n \"m+7\": \"m(ma7)\",\n \"m(+7)\": \"m(ma7)\",\n \"m(maj7)\": \"m(ma7)\",\n \"min(maj7)\": \"m(ma7)\",\n \"mi(maj7)\": \"m(ma7)\",\n \"m(M7)\": \"m(ma7)\",\n \"m(ma7)\": \"m(ma7)\",\n \"m(add9)\": \"m(9)\",\n \"m(9)\": \"m(9)\",\n \"m(add4)\": \"m(4)\",\n \"m(4)\": \"m(4)\",\n \"m(add11)\": \"m(11)\",\n \"m(11)\": \"m(11)\",\n \"-\": \"m\",\n \"minor\": \"m\",\n \"min\": \"m\",\n \"mi\": \"m\",\n \"m\": \"m\",\n \"dim 7th\": \"dim7\",\n \"dim 7\": \"dim7\",\n \"o7\": \"dim7\",\n \"dim7\": \"dim7\",\n \"-b5\": \"dim\",\n \"-(b5)\": \"dim\",\n \"m(-5)\": \"dim\",\n \"m-5\": \"dim\",\n \"mb5\": \"dim\",\n \"m(b5)\": \"dim\",\n \"dim\": \"dim\",\n \"b9sus\": \"b9sus\",\n \"b69sus\": \"b69sus\",\n \"b69(#11)\": \"b69(#11)\",\n \"m9sus\": \"9sus4\",\n \"m9sus4\": \"9sus4\",\n \"9sus\": \"9sus4\",\n \"9sus4\": \"9sus4\",\n \"9aug\": \"9aug\",\n \"9(-5)\": \"9(b5)\",\n \"9-5\": \"9(b5)\",\n \"9b5\": \"9(b5)\",\n \"9(b5)\": \"9(b5)\",\n \"9(-13)\": \"9(b13)\",\n \"9-13\": \"9(b13)\",\n \"9b13\": \"9(b13)\",\n \"9(b13)\": \"9(b13)\",\n \"x9\": \"9(#5)\",\n \"aug9\": \"9(#5)\",\n \"9(+5)\": \"9(#5)\",\n \"9+5\": \"9(#5)\",\n \"9#5\": \"9(#5)\",\n \"9(#5)\": \"9(#5)\",\n \"9(+11)\": \"9(#11)\",\n \"9+11\": \"9(#11)\",\n \"9#11\": \"9(#11)\",\n \"9(#11)\": \"9(#11)\",\n \"dom 9\": \"9\",\n \"dom9\": \"9\",\n \"7sus\": \"7sus4\",\n \"7sus4\": \"7sus4\",\n \"7sus(b9)\": \"7sus(b9)\",\n \"7sus(6)\": \"7sus(6)\",\n \"7b9sus4\": \"7b9sus4\",\n \"7aug5\": \"7aug5\",\n \"7(no3)\": \"7(no3)\",\n \"7(b9b5)\": \"7(b9b5)\",\n \"7(-13-9)\": \"7(b9b13)\",\n \"7-13-9\": \"7(b9b13)\",\n \"7b13b9\": \"7(b9b13)\",\n \"7(b13b9)\": \"7(b9b13)\",\n \"7(-9-13)\": \"7(b9b13)\",\n \"7-9-13\": \"7(b9b13)\",\n \"7b9b13\": \"7(b9b13)\",\n \"7(b9b13)\": \"7(b9b13)\",\n \"7(+5-9)\": \"7(b9#5)\",\n \"7+5-9\": \"7(b9#5)\",\n \"7#5b9\": \"7(b9#5)\",\n \"7(#5b9)\": \"7(b9#5)\",\n \"7(b9#5)\": \"7(b9#5)\",\n \"7(-9)\": \"7(b9)\",\n \"7-9\": \"7(b9)\",\n \"7b9\": \"7(b9)\",\n \"7(b9)\": \"7(b9)\",\n \"7(-5-9)\": \"7(b5b9)\",\n \"7-5-9\": \"7(b5b9)\",\n \"7b5b9\": \"7(b5b9)\",\n \"7(b5b9)\": \"7(b5b9)\",\n \"7(-5+9)\": \"7(b5#9)\",\n \"7-5+9\": \"7(b5#9)\",\n \"7b5#9\": \"7(b5#9)\",\n \"7(b5#9)\": \"7(b5#9)\",\n \"7(-5+11)\": \"7(b5#11)\",\n \"7-5+11\": \"7(b5#11)\",\n \"7b5#11\": \"7(b5#11)\",\n \"7(b5#11)\": \"7(b5#11)\",\n \"7(-5)\": \"7(b5)\",\n \"7-5\": \"7(b5)\",\n \"7b5\": \"7(b5)\",\n \"7(b5)\": \"7(b5)\",\n \"7(-13)\": \"7(b13)\",\n \"7-13\": \"7(b13)\",\n \"7b13\": \"7(b13)\",\n \"7(b13)\": \"7(b13)\",\n \"7(6)\": \"7(6)\",\n \"7(#9b5)\": \"7(#9b5)\",\n \"7(-13+9)\": \"7(#9b13)\",\n \"7-13+9\": \"7(#9b13)\",\n \"7b13#9\": \"7(#9b13)\",\n \"7(b13#9)\": \"7(#9b13)\",\n \"7+9-13\": \"7(#9b13)\",\n \"7(+9-13)\": \"7(#9b13)\",\n \"7#9b13\": \"7(#9b13)\",\n \"7(#9b13)\": \"7(#9b13)\",\n \"7(+5+9)\": \"7(#9#5)\",\n \"7+5+9\": \"7(#9#5)\",\n \"7#5#9\": \"7(#9#5)\",\n \"7(#5#9)\": \"7(#9#5)\",\n \"7(#9#5)\": \"7(#9#5)\",\n \"7(+9)\": \"7(#9)\",\n \"7+9\": \"7(#9)\",\n \"7#9\": \"7(#9)\",\n \"7(#9)\": \"7(#9)\",\n \"7(+5+11)\": \"7(#5#11)\",\n \"7+5+11\": \"7(#5#11)\",\n \"7#5#11\": \"7(#5#11)\",\n \"7(#5#11)\": \"7(#5#11)\",\n \"aug 7th\": \"7(#5)\",\n \"aug 7\": \"7(#5)\",\n \"x7\": \"7(#5)\",\n \"7(+5)\": \"7(#5)\",\n \"7+5\": \"7(#5)\",\n \"7#5\": \"7(#5)\",\n \"aug7\": \"7(#5)\",\n \"7(#5)\": \"7(#5)\",\n \"7(+11)\": \"7(#11)\",\n \"7+11\": \"7(#11)\",\n \"7#11\": \"7(#11)\",\n \"7(#11)\": \"7(#11)\",\n \"dom 7th\": \"7\",\n \"dom 7\": \"7\",\n \"dom7\": \"7\",\n \"6(add9)\": \"6(9)\",\n \"6(9)\": \"6(9)\",\n \"6(no3)\": \"6(no3)\",\n \"6(b9)\": \"6(b9)\",\n \"6(2)\": \"6(2)\",\n \"5(no3)\": \"5\",\n \"(no 3rd)\": \"5\",\n \"(no 3)\": \"5\",\n \"(no3)\": \"5\",\n \"no3\": \"5\",\n \"sus42\": \"4(2)\",\n \"4(2)\": \"4(2)\",\n \"2(no3)\": \"2(no3)\",\n \"2(ma7)\": \"2(ma7)\",\n \"sus2(4)\": \"2(4)\",\n \"2(4)\": \"2(4)\",\n \"2(+7)\": \"2(+7)\",\n \"2(#4)(#42)(2#4)\": \"2(#4)(#42)(2#4)\",\n \"(#4)2\": \"2(#4)\",\n \"2(#4)\": \"2(#4)\",\n \"2(+4)\": \"2(#4)\",\n \"2#4\": \"2(#4)\",\n \"2+4\": \"2(#4)\",\n \"2(#11)\": \"2(#11)\",\n \"add9(no3)\": \"2\",\n \"sus2\": \"2\",\n \"m13sus\": \"13sus4\",\n \"m13sus4\": \"13sus4\",\n \"13sus\": \"13sus4\",\n \"13sus4\": \"13sus4\",\n \"13(-9-5)\": \"13(b9b5)\",\n \"13-9-5\": \"13(b9b5)\",\n \"13b9b5\": \"13(b9b5)\",\n \"13(b9b5)\": \"13(b9b5)\",\n \"13(-9+5)\": \"13(b9#5)\",\n \"13-9+5\": \"13(b9#5)\",\n \"13b9#5\": \"13(b9#5)\",\n \"13(b9#5)\": \"13(b9#5)\",\n \"13(-9)\": \"13(b9)\",\n \"13-9\": \"13(b9)\",\n \"13b9\": \"13(b9)\",\n \"13(b9)\": \"13(b9)\",\n \"13(-5)\": \"13(b5)\",\n \"13-5\": \"13(b5)\",\n \"13b5\": \"13(b5)\",\n \"13(b5)\": \"13(b5)\",\n \"13(add4)\": \"13(add4)\",\n \"13+9-5\": \"13(#9b5)\",\n \"13(+9-5)\": \"13(#9b5)\",\n \"13#9b5\": \"13(#9b5)\",\n \"13(#9b5)\": \"13(#9b5)\",\n \"13+9+5\": \"13(#9#5)\",\n \"13(+9+5)\": \"13(#9#5)\",\n \"13#9#5\": \"13(#9#5)\",\n \"13(#9#5)\": \"13(#9#5)\",\n \"13+9\": \"13(#9)\",\n \"13(+9)\": \"13(#9)\",\n \"13#9\": \"13(#9)\",\n \"13(#9)\": \"13(#9)\",\n \"13(+5)\": \"13(#5)\",\n \"13+5\": \"13(#5)\",\n \"13#5\": \"13(#5)\",\n \"13(#5)\": \"13(#5)\",\n \"13(+11)\": \"13(#11)\",\n \"13+11\": \"13(#11)\",\n \"13#11\": \"13(#11)\",\n \"13(#11)\": \"13(#11)\",\n \"dom 13\": \"13\",\n \"dom13\": \"13\",\n \"m11sus\": \"11sus4\",\n \"m11sus4\": \"11sus4\",\n \"11sus\": \"11sus4\",\n \"11sus4\": \"11sus4\",\n \"11(-9)\": \"11(b9)\",\n \"11-9\": \"11(b9)\",\n \"11b9\": \"11(b9)\",\n \"11(b9)\": \"11(b9)\",\n \"11(-5)\": \"11(b5)\",\n \"11-5\": \"11(b5)\",\n \"11b5\": \"11(b5)\",\n \"11(b5)\": \"11(b5)\",\n \"11(-13)\": \"11(b13)\",\n \"11-13\": \"11(b13)\",\n \"11b13\": \"11(b13)\",\n \"11(b13)\": \"11(b13)\",\n \"11(+9)\": \"11(#9)\",\n \"11+9\": \"11(#9)\",\n \"11#9\": \"11(#9)\",\n \"11(#9)\": \"11(#9)\",\n \"11(+5)\": \"11(#5)\",\n \"11+5\": \"11(#5)\",\n \"11#5\": \"11(#5)\",\n \"11(#5)\": \"11(#5)\",\n \"dom 11\": \"11\",\n \"dom11\": \"11\",\n \"x\": \"+\",\n \"(+5)\": \"+\",\n \"+5\": \"+\",\n \"#5\": \"+\",\n \"(#5)\": \"+\",\n \"aug\": \"+\",\n \"+\": \"+\",\n \"Majj\": \"[blank]\",\n \"Ma\": \"[blank]\",\n \"ma\": \"[blank]\",\n \"M\": \"[blank]\",\n \"major\": \"[blank]\",\n \"maj\": \"[blank]\",\n \"[blank]\": \"[blank]\",\n \"unis\": \"(unis)\",\n \"(unis)\": \"(unis)\",\n \"(b6)\": \"(b6)\",\n \"2(6)\": \"2(6)\",\n \"b5\": \"(b5)\",\n \"(-5)\": \"(b5)\",\n \"-5\": \"(b5)\",\n \"(b5)\": \"(b5)\",\n \"(add9)\": \"(9)\",\n \"add9\": \"(9)\",\n \"(9)\": \"(9)\",\n \"(7)\": \"(7)\",\n \"(add6)\": \"(6)\",\n \"add6\": \"(6)\",\n \"(6)\": \"(6)\",\n \"sus(4)\": \"(4)\",\n \"(add4)\": \"(4)\",\n \"add4\": \"(4)\",\n \"(4)\": \"(4)\",\n \"(add2)\": \"(2)\",\n \"add2\": \"(2)\",\n \"(2)\": \"(2)\",\n \"(add13)\": \"(13)\",\n \"add13\": \"(13)\",\n \"(13)\": \"(13)\",\n \"(add11)\": \"(11)\",\n \"add11\": \"(11)\",\n \"(11)\": \"(11)\",\n \"(+4)\": \"(#4)\",\n \"+4\": \"(#4)\",\n \"#4\": \"(#4)\",\n \"(#4)\": \"(#4)\"\n};\n\nexport default mapping;","/**\n * Album meta directive. See https://www.chordpro.org/chordpro/directives-album/\n * @type {string}\n */\nimport AstComponent from './ast_component';\nimport TraceInfo from './trace_info';\n\nexport const ALBUM = 'album';\n\n/**\n * Artist meta directive. See https://www.chordpro.org/chordpro/directives-artist/\n * @type {string}\n */\nexport const ARTIST = 'artist';\n\n/**\n * Capo meta directive. See https://www.chordpro.org/chordpro/directives-capo/\n * @type {string}\n */\nexport const CAPO = 'capo';\n\n/**\n * Comment directive. See https://www.chordpro.org/chordpro/directives-comment/\n * @type {string}\n */\nexport const COMMENT = 'comment';\n\n/**\n * Composer meta directive. See https://www.chordpro.org/chordpro/directives-composer/\n * @type {string}\n */\nexport const COMPOSER = 'composer';\n\n/**\n * Copyright meta directive. See https://www.chordpro.org/chordpro/directives-copyright/\n * @type {string}\n */\nexport const COPYRIGHT = 'copyright';\n\n/**\n * Duration meta directive. See https://www.chordpro.org/chordpro/directives-duration/\n * @type {string}\n */\nexport const DURATION = 'duration';\n\n/**\n * End of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/\n * @type {string}\n */\nexport const END_OF_CHORUS = 'end_of_chorus';\n\n/**\n * End of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/\n * @type {string}\n */\nexport const END_OF_TAB = 'end_of_tab';\n\n/**\n * End of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/\n * @type {string}\n */\nexport const END_OF_VERSE = 'end_of_verse';\n\n/**\n * Key meta directive. See https://www.chordpro.org/chordpro/directives-key/\n * @type {string}\n */\nexport const KEY = 'key';\n\n/**\n * _Key meta directive. Reflects the key as transposed by the capo value\n * See https://www.chordpro.org/chordpro/directives-key/\n * @type {string}\n */\nexport const _KEY = '_key';\n\n/**\n * Lyricist meta directive. See https://www.chordpro.org/chordpro/directives-lyricist/\n * @type {string}\n */\nexport const LYRICIST = 'lyricist';\n\n/**\n * Start of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/\n * @type {string}\n */\nexport const START_OF_CHORUS = 'start_of_chorus';\n\n/**\n * Start of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/\n * @type {string}\n */\nexport const START_OF_TAB = 'start_of_tab';\n\n/**\n * Start of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/\n * @type {string}\n */\nexport const START_OF_VERSE = 'start_of_verse';\n\n/**\n * Subtitle meta directive. See https://www.chordpro.org/chordpro/directives-subtitle/\n * @type {string}\n */\nexport const SUBTITLE = 'subtitle';\n\n/**\n * Tempo meta directive. See https://www.chordpro.org/chordpro/directives-tempo/\n * @type {string}\n */\nexport const TEMPO = 'tempo';\n\n/**\n * Time meta directive. See https://www.chordpro.org/chordpro/directives-time/\n * @type {string}\n */\nexport const TIME = 'time';\n\n/**\n * Title meta directive. See https://www.chordpro.org/chordpro/directives-title/\n * @type {string}\n */\nexport const TITLE = 'title';\n\n/**\n * Transpose meta directive. See: https://www.chordpro.org/chordpro/directives-transpose/\n * @type {string}\n */\nexport const TRANSPOSE = 'transpose';\n/**\n * New Key meta directive. See: https://github.com/PraiseCharts/ChordChartJS/issues/53\n * @type {string}\n */\nexport const NEW_KEY = 'new_key';\n\n/**\n * Year meta directive. See https://www.chordpro.org/chordpro/directives-year/\n * @type {string}\n */\nexport const YEAR = 'year';\n\nconst TITLE_SHORT = 't';\nconst SUBTITLE_SHORT = 'st';\nconst COMMENT_SHORT = 'c';\nconst START_OF_CHORUS_SHORT = 'soc';\nconst END_OF_CHORUS_SHORT = 'eoc';\nconst START_OF_TAB_SHORT = 'sot';\nconst END_OF_TAB_SHORT = 'eot';\nconst NEW_KEY_SHORT = 'nk';\n\nconst RENDERABLE_TAGS = [COMMENT];\n\nexport const META_TAGS = [\n ALBUM,\n ARTIST,\n CAPO,\n COMPOSER,\n COPYRIGHT,\n DURATION,\n KEY,\n LYRICIST,\n TEMPO,\n TIME,\n TITLE,\n SUBTITLE,\n YEAR,\n];\n\nexport const READ_ONLY_TAGS = [_KEY];\n\nconst ALIASES = {\n [TITLE_SHORT]: TITLE,\n [SUBTITLE_SHORT]: SUBTITLE,\n [COMMENT_SHORT]: COMMENT,\n [START_OF_CHORUS_SHORT]: START_OF_CHORUS,\n [END_OF_CHORUS_SHORT]: END_OF_CHORUS,\n [START_OF_TAB_SHORT]: START_OF_TAB,\n [END_OF_TAB_SHORT]: END_OF_TAB,\n [NEW_KEY_SHORT]: NEW_KEY,\n};\n\nconst TAG_REGEX = /^([^:\\s]+)(:?\\s*(.+))?$/;\nconst CUSTOM_META_TAG_NAME_REGEX = /^x_(.+)$/;\n\nexport function isReadonlyTag(tagName) {\n return READ_ONLY_TAGS.includes(tagName);\n}\n\nconst translateTagNameAlias = (name) => {\n if (!name) {\n return name;\n }\n\n const sanitizedName = name.trim();\n\n if (sanitizedName in ALIASES) {\n return ALIASES[sanitizedName];\n }\n\n return sanitizedName;\n};\n\n/**\n * Represents a tag/directive. See https://www.chordpro.org/chordpro/chordpro-directives/\n */\nclass Tag extends AstComponent {\n _originalName: string;\n\n _name: string;\n\n _value?: string;\n\n _isMetaTag: boolean = false;\n\n constructor(name, value = '', traceInfo: TraceInfo = null) {\n super(traceInfo);\n this.parseNameValue(name, value);\n }\n\n private parseNameValue(name: string, value: string | null): void {\n if (name === 'meta') {\n const [metaName, metaValue] = value.split(/\\s(.+)/);\n this.name = metaName;\n this.value = metaValue || '';\n this._isMetaTag = true;\n } else {\n this.name = name;\n this.value = value || '';\n }\n }\n\n static parse(tag: string | Tag): Tag {\n if (tag instanceof Tag) {\n return tag;\n }\n\n return this.parseWithRegex(tag, TAG_REGEX);\n }\n\n static parseWithRegex(tag: string, regex: RegExp): Tag | null {\n const matches = tag.match(regex);\n\n if (matches !== null) {\n return new Tag(matches[1], matches[3] || null);\n }\n\n return null;\n }\n\n set name(name) {\n this._name = translateTagNameAlias(name);\n this._originalName = name;\n }\n\n /**\n * The tag full name. When the original tag used the short name, `name` will return the full name.\n * @member\n * @type {string}\n */\n get name() {\n return this._name.trim();\n }\n\n /**\n * The original tag name that was used to construct the tag.\n * @member\n * @type {string}\n */\n get originalName() {\n return this._originalName.trim();\n }\n\n set value(value) {\n this._value = value;\n }\n\n /**\n * The tag value\n * @member\n * @type {string|null}\n */\n get value() {\n if (this._value) {\n return `${this._value}`.trim();\n }\n\n return this._value || null;\n }\n\n /**\n * Checks whether the tag value is a non-empty string.\n * @returns {boolean}\n */\n hasValue() {\n return this.value !== null && this.value.trim().length > 0;\n }\n\n /**\n * Checks whether the tag is usually rendered inline. It currently only applies to comment tags.\n * @returns {boolean}\n */\n isRenderable() {\n return RENDERABLE_TAGS.indexOf(this.name) !== -1;\n }\n\n /**\n * Checks whether the tag is either a standard meta tag or a custom meta directive (`{x_some_name}`)\n * @returns {boolean}\n */\n isMetaTag(): boolean {\n return this._isMetaTag || CUSTOM_META_TAG_NAME_REGEX.test(this.name) || META_TAGS.indexOf(this.name) !== -1;\n }\n\n /**\n * Returns a clone of the tag.\n * @returns {Tag} The cloned tag\n */\n clone() {\n return new Tag(this._originalName, this.value);\n }\n\n toString() {\n return `Tag(name=${this.name}, value=${this.name})`;\n }\n\n set({ value }) {\n return new Tag(this._originalName, value);\n }\n\n setValue(value: string) {\n return this.set({ value });\n }\n}\n\nexport default Tag;\n","import TraceInfo from './trace_info';\n\nabstract class AstComponent {\n line?: number = null;\n\n column?: number = null;\n\n offset?: number = null;\n\n protected constructor(traceInfo: TraceInfo = null) {\n if (traceInfo) {\n this.line = traceInfo.line;\n this.column = traceInfo.column;\n this.offset = traceInfo.offset;\n }\n }\n\n abstract clone(): any;\n}\n\nexport default AstComponent;\n","/**\n * Represents a comment. See https://www.chordpro.org/chordpro/chordpro-file-format-specification/#overview\n */\nclass Comment {\n content: string;\n\n constructor(content) {\n this.content = content;\n }\n\n /**\n * Indicates whether a Comment should be visible in a formatted chord sheet (except for ChordPro sheets)\n * @returns {boolean}\n */\n isRenderable() {\n return false;\n }\n\n /**\n * Returns a deep copy of the Comment, useful when programmatically transforming a song\n * @returns {Comment}\n */\n clone() {\n return new Comment(this.content);\n }\n\n toString() {\n return `Comment(content=${this.content})`;\n }\n}\n\nexport default Comment;\n","import { INDETERMINATE } from '../constants';\nimport Line from './line';\n\n/**\n * Represents a paragraph of lines in a chord sheet\n */\nclass Paragraph {\n /**\n * The {@link Line} items of which the paragraph consists\n * @member\n * @type {Line[]}\n */\n lines: Line[] = [];\n\n addLine(line) {\n this.lines.push(line);\n }\n\n /**\n * Tries to determine the common type for all lines. If the types for all lines are equal, it returns that type.\n * If not, it returns {@link INDETERMINATE}\n * @returns {string}\n */\n get type(): 'verse' | 'chorus' | 'none' | 'indeterminate' {\n const types = this.lines.map((line) => line.type);\n const uniqueTypes = [...new Set(types)];\n\n if (uniqueTypes.length === 1) {\n return uniqueTypes[0];\n }\n\n return INDETERMINATE;\n }\n\n /**\n * Indicates whether the paragraph contains lines with renderable items.\n * @see {@link Line.hasRenderableItems}\n * @returns {boolean}\n */\n hasRenderableItems() {\n return this.lines.some((line) => line.hasRenderableItems());\n }\n}\n\nexport default Paragraph;\n","import Chord from '../chord';\nimport MetadataAccessors from './metadata_accessors';\n\nimport {\n _KEY,\n CAPO,\n KEY,\n isReadonlyTag,\n} from './tag';\n\nfunction appendValue(array, key, value) {\n if (!array.includes(value)) {\n array.push(value);\n }\n}\n\n/**\n * Stores song metadata. Properties can be accessed using the get() method:\n *\n * const metadata = new Metadata({ author: 'John' });\n * metadata.get('author') // => 'John'\n *\n * See {@link Metadata#get}\n */\nclass Metadata extends MetadataAccessors {\n metadata: Record<string, string | string[]> = {};\n\n constructor(metadata = null) {\n super();\n\n Object\n .keys(metadata || {})\n .filter((key) => !isReadonlyTag(key))\n .forEach((key) => {\n const value = metadata[key];\n\n if (value instanceof Array) {\n this.metadata[key] = [...value];\n } else {\n this.metadata[key] = value;\n }\n });\n }\n\n contains(key) {\n return key in this.metadata;\n }\n\n add(key, value) {\n if (isReadonlyTag(key)) {\n return;\n }\n\n if (!(key in this.metadata)) {\n this.metadata[key] = value;\n return;\n }\n\n const currentValue = this.metadata[key];\n\n if (currentValue === value) {\n return;\n }\n\n if (currentValue instanceof Array) {\n appendValue(currentValue, key, value);\n return;\n }\n\n this.metadata[key] = [currentValue, value];\n }\n\n set(key, value) {\n if (value) {\n this.metadata[key] = value;\n } else {\n delete this.metadata[key];\n }\n }\n\n getMetadata(name: string): string | string[] {\n return this.get(name);\n }\n\n /**\n * Reads a metadata value by key. This method supports simple value lookup, as fetching single array values.\n *\n * This method deprecates direct property access, eg: metadata['author']\n *\n * Examples:\n *\n * const metadata = new Metadata({ lyricist: 'Pete', author: ['John', 'Mary'] });\n * metadata.get('lyricist') // => 'Pete'\n * metadata.get('author') // => ['John', 'Mary']\n * metadata.get('author.1') // => 'John'\n * metadata.get('author.2') // => 'Mary'\n *\n * Using a negative index will start counting at the end of the list:\n *\n * const metadata = new Metadata({ lyricist: 'Pete', author: ['John', 'Mary'] });\n * metadata.get('author.-1') // => 'Mary'\n * metadata.get('author.-2') // => 'John'\n *\n * @param prop the property name\n * @returns {Array<String>|String} the metadata value(s). If there is only one value, it will return a String,\n * else it returns an array of strings.\n */\n get(prop) {\n if (prop === _KEY) {\n return this.calculateKeyFromCapo();\n }\n\n if (prop in this.metadata) {\n return this.metadata[prop];\n }\n\n return this.getArrayItem(prop);\n }\n\n /**\n * Returns a single metadata value. If the actual value is an array, it returns the first value. Else, it returns\n * the value.\n * @ignore\n * @param {string} prop the property name\n * @returns {String} The metadata value\n */\n getSingle(prop) {\n const value = this.get(prop);\n\n if (Array.isArray(value)) {\n return value[0];\n }\n\n return value;\n }\n\n parseArrayKey(prop) {\n const match = prop.match(/(.+)\\.(-?\\d+)$/);\n\n if (!match) {\n return [];\n }\n\n const key = match[1];\n const index = parseInt(match[2], 10);\n return [key, index];\n }\n\n getArrayItem(prop) {\n const [key, index] = this.parseArrayKey(prop);\n\n if (!(key && index)) {\n return undefined;\n }\n\n const arrayValue = (this.metadata[key] || []);\n let itemIndex = index;\n\n if (itemIndex < 0) {\n itemIndex = arrayValue.length + itemIndex;\n } else if (itemIndex > 0) {\n itemIndex -= 1;\n }\n\n return arrayValue[itemIndex];\n }\n\n /**\n * Returns a deep clone of this Metadata object\n * @returns {Metadata} the cloned Metadata object\n */\n clone() {\n return new Metadata(this.metadata);\n }\n\n calculateKeyFromCapo() {\n const capo = this.getSingle(CAPO);\n const key = this.getSingle(KEY);\n\n if (capo && key) {\n return Chord.parse(key).transpose(parseInt(capo, 10)).toString();\n }\n\n return undefined;\n }\n}\n\nexport default Metadata;\n","import {\n ALBUM,\n ARTIST,\n CAPO,\n COMPOSER,\n COPYRIGHT,\n DURATION,\n KEY,\n LYRICIST,\n SUBTITLE,\n TEMPO,\n TIME,\n TITLE,\n YEAR,\n} from './tag';\n\nabstract class MetadataAccessors {\n abstract getMetadata(_name: string): string | string[];\n\n get key() { return this.getMetadata(KEY); }\n\n get title() { return this.getMetadata(TITLE); }\n\n get subtitle() { return this.getMetadata(SUBTITLE); }\n\n get capo() { return this.getMetadata(CAPO); }\n\n get duration() { return this.getMetadata(DURATION); }\n\n get tempo() { return this.getMetadata(TEMPO); }\n\n get time() { return this.getMetadata(TIME); }\n\n get year() { return this.getMetadata(YEAR); }\n\n get album() { return this.getMetadata(ALBUM); }\n\n get copyright() { return this.getMetadata(COPYRIGHT); }\n\n get lyricist() { return this.getMetadata(LYRICIST); }\n\n get artist() { return this.getMetadata(ARTIST); }\n\n get composer() { return this.getMetadata(COMPOSER); }\n}\n\nexport default MetadataAccessors;\n","/**\n * Represents a parser warning, currently only used by ChordProParser.\n */\nclass ParserWarning {\n /**\n * The warning message\n * @member\n * @type {string}\n */\n message: string;\n\n /**\n * The chord sheet line number on which the warning occurred\n * @member\n * @type {number}\n */\n lineNumber: number;\n\n /**\n * The chord sheet column on which the warning occurred\n * @member\n * @type {number}\n */\n column: number;\n\n /**\n * @hideconstructor\n */\n constructor(message: string, lineNumber: number, column: number) {\n this.message = message;\n this.lineNumber = lineNumber;\n this.column = column;\n }\n\n /**\n * Returns a stringified version of the warning\n * @returns {string} The string warning\n */\n toString() {\n return `Warning: ${this.message} on line ${this.lineNumber} column ${this.column}`;\n }\n}\n\nexport default ParserWarning;\n","import EvaluationError from './evaluation_error';\nimport { isPresent, presence } from '../../utilities';\nimport Composite from './composite';\nimport AstComponent from '../ast_component';\n\nclass Ternary extends AstComponent {\n variable?: string;\n\n valueTest?: string;\n\n trueExpression: AstComponent[] = [];\n\n falseExpression: AstComponent[] = [];\n\n constructor(\n {\n variable = null,\n valueTest = null,\n trueExpression = null,\n falseExpression = null,\n line = null,\n column = null,\n offset = null,\n } = {},\n ) {\n super({ line, column, offset });\n this.variable = presence(variable);\n this.valueTest = valueTest;\n this.trueExpression = trueExpression;\n this.falseExpression = falseExpression;\n }\n\n /**\n * Evaluate the meta expression\n * @param {Metadata} metadata The metadata object to use for evaluating the expression\n * @param {string} [metadataSeparator=null] The metadata separator to use if necessary\n * @returns {string} The evaluated expression\n */\n evaluate(metadata, metadataSeparator = null, upperContext = null) {\n if (this.variable) {\n return this.evaluateWithVariable(metadata, metadataSeparator);\n }\n\n if (!upperContext) {\n throw new EvaluationError('Unexpected empty expression', this.line, this.column, this.offset);\n }\n\n return this.evaluateToString(metadata.get(upperContext), metadataSeparator);\n }\n\n evaluateToString(value, metadataSeparator) {\n if (Array.isArray(value)) {\n return value.join(metadataSeparator);\n }\n\n return value;\n }\n\n evaluateWithVariable(metadata, metadataSeparator) {\n const value = metadata.get(this.variable);\n\n if (isPresent(value) && (!this.valueTest || value === this.valueTest)) {\n return this.evaluateForTruthyValue(metadata, metadataSeparator, value);\n }\n\n if (this.falseExpression) {\n return new Composite(this.falseExpression, this.variable).evaluate(metadata, metadataSeparator);\n }\n\n return '';\n }\n\n evaluateForTruthyValue(metadata, metadataSeparator, value) {\n if (this.trueExpression) {\n return new Composite(this.trueExpression, this.variable).evaluate(metadata, metadataSeparator);\n }\n\n return value;\n }\n\n isRenderable() {\n return true;\n }\n\n clone() {\n return new Ternary({\n variable: this.variable,\n valueTest: this.valueTest,\n trueExpression: this.trueExpression?.map((part) => part.clone()),\n falseExpression: this.falseExpression?.map((part) => part.clone()),\n line: this.line,\n column: this.column,\n offset: this.offset,\n });\n }\n}\n\nexport default Ternary;\n","class EvaluationError extends Error {\n line: number;\n\n column: number;\n\n offset: number;\n\n constructor(message, line, column, offset) {\n super(`${message} on line ${line} column ${column}`);\n this.name = 'ExpressionError';\n this.line = line;\n this.column = column;\n this.offset = offset;\n }\n}\n\nexport default EvaluationError;\n","import Evaluatable from './evaluatable';\n\nclass Composite {\n expressions: Evaluatable[] = [];\n\n variable?: string;\n\n constructor(expressions, variable = null) {\n this.expressions = expressions;\n this.variable = variable;\n }\n\n evaluate(metadata, metadataSeparator) {\n return this.expressions.map((expression) => (\n expression.evaluate(metadata, metadataSeparator, this.variable)\n )).join('');\n }\n\n isRenderable() {\n return true;\n }\n\n clone() {\n return new Composite({\n expressions: this.expressions.map((expression) => expression.clone()),\n variable: this.variable,\n });\n }\n}\n\nexport default Composite;\n","import Song from '../chord_sheet/song';\nimport Line from '../chord_sheet/line';\nimport ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\n\nconst WHITE_SPACE = /\\s/;\nconst CHORD_LINE_REGEX = /^\\s*((([A-G])(#|b)?([^/\\s]*)(\\/([A-G])(#|b)?)?)(\\s|$)+)+(\\s|$)+/;\n\n/**\n * Parses a normal chord sheet\n */\nclass ChordSheetParser {\n processingText: boolean = true;\n\n preserveWhitespace: boolean = true;\n\n song?: Song;\n\n songLine?: Line;\n\n chordLyricsPair?: ChordLyricsPair;\n\n lines: string[] = [];\n\n currentLine: number = 0;\n\n lineCount: number = 0;\n\n /**\n * Instantiate a chord sheet parser\n * @param {Object} [options={}] options\n * @param {boolean} [options.preserveWhitespace=true] whether to preserve trailing whitespace for chords\n */\n constructor({ preserveWhitespace = true } = {}) {\n this.preserveWhitespace = (preserveWhitespace === true);\n }\n\n /**\n * Parses a chord sheet into a song\n * @param {string} chordSheet The ChordPro chord sheet\n * @param {Object} [options={}] Optional parser options\n * @param {Song} [options.song=null] The {@link Song} to store the song data in\n * @returns {Song} The parsed song\n */\n parse(chordSheet, { song = null } = {}) {\n this.initialize(chordSheet, { song });\n\n while (this.hasNextLine()) {\n const line = this.readLine();\n this.parseLine(line);\n }\n\n this.endOfSong();\n return this.song;\n }\n\n endOfSong() { }\n\n parseLine(line) {\n this.songLine = this.song.addLine();\n\n if (line.trim().length === 0) {\n this.chordLyricsPair = null;\n } else {\n this.parseNonEmptyLine(line);\n }\n }\n\n parseNonEmptyLine(line) {\n this.chordLyricsPair = this.songLine.addChordLyricsPair();\n\n if (CHORD_LINE_REGEX.test(line) && this.hasNextLine()) {\n const nextLine = this.readLine();\n this.parseLyricsWithChords(line, nextLine);\n } else {\n this.chordLyricsPair.lyrics = `${line}`;\n }\n }\n\n initialize(document, { song = null } = {}) {\n this.song = (song || new Song());\n this.lines = document.split('\\n');\n this.currentLine = 0;\n this.lineCount = this.lines.length;\n this.processingText = true;\n }\n\n readLine() {\n const line = this.lines[this.currentLine];\n this.currentLine += 1;\n return line;\n }\n\n hasNextLine() {\n return this.currentLine < this.lineCount;\n }\n\n parseLyricsWithChords(chordsLine, lyricsLine) {\n this.processCharacters(chordsLine, lyricsLine);\n\n this.chordLyricsPair.lyrics += lyricsLine.substring(chordsLine.length);\n\n this.chordLyricsPair.chords = this.chordLyricsPair.chords.trim();\n this.chordLyricsPair.lyrics = this.chordLyricsPair.lyrics.trim();\n\n if (!lyricsLine.trim().length) {\n this.songLine = this.song.addLine();\n }\n }\n\n processCharacters(chordsLine, lyricsLine) {\n for (let c = 0, charCount = chordsLine.length; c < charCount; c += 1) {\n const chr = chordsLine[c];\n const nextChar = chordsLine[c + 1];\n const isWhiteSpace = WHITE_SPACE.test(chr);\n this.addCharacter(chr, nextChar);\n\n this.chordLyricsPair.lyrics += lyricsLine[c] || '';\n this.processingText = !isWhiteSpace;\n }\n }\n\n addCharacter(chr, nextChar) {\n const isWhiteSpace = WHITE_SPACE.test(chr);\n\n if (!isWhiteSpace) {\n this.ensureChordLyricsPairInitialized();\n }\n\n if (!isWhiteSpace || this.shouldAddCharacterToChords(nextChar)) {\n this.chordLyricsPair.chords += chr;\n }\n }\n\n shouldAddCharacterToChords(nextChar) {\n return (nextChar && WHITE_SPACE.test(nextChar) && this.preserveWhitespace);\n }\n\n ensureChordLyricsPairInitialized() {\n if (!this.processingText) {\n this.chordLyricsPair = this.songLine.addChordLyricsPair();\n this.processingText = true;\n }\n }\n}\n\nexport default ChordSheetParser;\n","import { CHORUS, NONE, VERSE } from '../constants';\nimport ChordSheetParser from './chord_sheet_parser';\n\nimport Tag, {\n COMMENT,\n END_OF_CHORUS,\n END_OF_VERSE,\n START_OF_CHORUS,\n START_OF_VERSE,\n} from '../chord_sheet/tag';\n\nconst VERSE_LINE_REGEX = /^\\[Verse.*]/;\nconst CHORUS_LINE_REGEX = /^\\[Chorus]/;\nconst OTHER_METADATA_LINE_REGEX = /^\\[([^\\]]+)]/;\n\nconst startSectionTags = {\n [VERSE]: START_OF_VERSE,\n [CHORUS]: START_OF_CHORUS,\n};\n\nconst endSectionTags = {\n [VERSE]: END_OF_VERSE,\n [CHORUS]: END_OF_CHORUS,\n};\n\n/**\n * Parses an Ultimate Guitar chord sheet with metadata\n * Inherits from {@link ChordSheetParser}\n */\nclass UltimateGuitarParser extends ChordSheetParser {\n currentSectionType?: string;\n\n parseLine(line) {\n if (this.isSectionEnd()) {\n this.endSection();\n }\n\n if (VERSE_LINE_REGEX.test(line)) {\n this.startNewLine();\n this.startSection(VERSE);\n } else if (CHORUS_LINE_REGEX.test(line)) {\n this.startNewLine();\n this.startSection(CHORUS);\n } else if (OTHER_METADATA_LINE_REGEX.test(line)) {\n this.startNewLine();\n this.endSection();\n const comment = line.match(OTHER_METADATA_LINE_REGEX)[1];\n this.songLine.addTag(new Tag(COMMENT, comment));\n } else {\n super.parseLine(line);\n }\n }\n\n isSectionEnd() {\n return this.songLine && this.songLine.isEmpty() && this.song.previousLine && !this.song.previousLine.isEmpty();\n }\n\n endOfSong() {\n super.endOfSong();\n if (this.currentSectionType in endSectionTags) {\n this.startNewLine();\n }\n this.endSection({ addNewLine: false });\n }\n\n startSection(sectionType) {\n if (this.currentSectionType) {\n this.endSection();\n }\n\n this.currentSectionType = sectionType;\n this.song.setCurrentLineType(sectionType);\n\n if (sectionType in startSectionTags) {\n this.song.addTag(new Tag(startSectionTags[sectionType]));\n }\n }\n\n endSection({ addNewLine = true } = {}) {\n if (this.currentSectionType in endSectionTags) {\n this.song.addTag(new Tag(endSectionTags[this.currentSectionType]));\n\n if (addNewLine) {\n this.startNewLine();\n }\n }\n\n this.song.setCurrentLineType(NONE);\n this.currentSectionType = null;\n }\n\n startNewLine() {\n this.songLine = this.song.addLine();\n }\n}\n\nexport default UltimateGuitarParser;\n","import Formatter from './formatter';\nimport ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\nimport Tag from '../chord_sheet/tag';\nimport { renderChord } from '../helpers';\nimport { hasTextContents } from '../template_helpers';\nimport Song from '../chord_sheet/song';\n\nimport {\n hasChordContents,\n padLeft,\n} from '../utilities';\n\n/**\n * Formats a song into a plain text chord sheet\n */\nclass TextFormatter extends Formatter {\n song?: Song;\n\n /**\n * Formats a song into a plain text chord sheet\n * @param {Song} song The song to be formatted\n * @returns {string} the chord sheet\n */\n format(song) {\n this.song = song;\n\n return [\n this.formatHeader(),\n this.formatParagraphs(),\n ].join('');\n }\n\n formatHeader() {\n const { title, subtitle } = this.song;\n const separator = (title || subtitle) ? '\\n' : '';\n\n return [\n this.formatTitle(title),\n this.formatSubTitle(subtitle),\n separator,\n ].join('');\n }\n\n formatParagraphs() {\n const { bodyParagraphs, metadata } = this.song;\n\n return bodyParagraphs\n .map((paragraph) => this.formatParagraph(paragraph, metadata))\n .join('\\n\\n');\n }\n\n formatParagraph(paragraph, metadata) {\n return paragraph.lines\n .filter((line) => line.hasRenderableItems())\n .map((line) => this.formatLine(line, metadata))\n .join('\\n');\n }\n\n formatLine(line, metadata) {\n const parts = [\n this.formatLineTop(line),\n this.formatLineBottom(line, metadata),\n ];\n\n return parts\n .filter((i) => i !== null)\n .map((part) => part.trimRight())\n .join('\\n');\n }\n\n formatTitle(title) {\n if (title) {\n return `${title.toUpperCase()}\\n`;\n }\n\n return '';\n }\n\n formatSubTitle(subtitle) {\n if (subtitle) {\n return `${subtitle}\\n`;\n }\n\n return '';\n }\n\n formatLineTop(line) {\n if (hasChordContents(line)) {\n return this.formatLineWithFormatter(line, this.formatItemTop);\n }\n\n return null;\n }\n\n chordLyricsPairLength(chordLyricsPair, line) {\n const chords = renderChord(chordLyricsPair.chords, line.key, line.transposeKey, this.song);\n const { lyrics } = chordLyricsPair;\n const chordsLength = (chords || '').length;\n const lyricsLength = (lyrics || '').length;\n\n if (chordsLength >= lyricsLength) {\n return chordsLength + 1;\n }\n\n return Math.max(chordsLength, lyricsLength);\n }\n\n formatItemTop(item, metadata, line) {\n if (item instanceof Tag && item.isRenderable()) {\n return padLeft('', item.value);\n }\n\n if (item instanceof ChordLyricsPair) {\n const chords = renderChord(item.chords, line.key, line.transposeKey, this.song);\n return padLeft(chords, this.chordLyricsPairLength(item, line));\n }\n\n return '';\n }\n\n formatLineBottom(line, metadata) {\n if (hasTextContents(line)) {\n return this.formatLineWithFormatter(line, this.formatItemBottom, metadata);\n }\n\n return null;\n }\n\n formatLineWithFormatter(line, formatter, metadata = null) {\n return line\n .items\n .map((item) => formatter.call(this, item, metadata, line))\n .join('');\n }\n\n formatItemBottom(item, metadata, line) {\n if (item instanceof Tag && item.isRenderable()) {\n return item.value;\n }\n\n if (item instanceof ChordLyricsPair) {\n return padLeft(item.lyrics, this.chordLyricsPairLength(item, line));\n }\n\n if (typeof item.evaluate === 'function') {\n return item.evaluate(metadata, this.configuration.get('metadata.separator'));\n }\n\n return '';\n }\n}\n\nexport default TextFormatter;\n","import Configuration from './configuration/configuration';\n\n/**\n * Base class for all formatters, taking care of receiving a configuration wrapping that inside a Configuration object\n */\nclass Formatter {\n configuration: Configuration;\n\n /**\n * Instantiate\n * @param {Object} [configuration={}] options\n * @param {boolean} [configuration.evaluate=false] Whether or not to evaluate meta expressions. For more info about\n * meta expressions, see: https://bit.ly/2SC9c2u\n * @param {object} [configuration.metadata={}]\n * @param {string} [configuration.metadata.separator=\", \"] The separator to be used when rendering a metadata value\n * that has multiple values. See: https://bit.ly/2SC9c2u\n */\n constructor(configuration = {}) {\n this.configuration = new Configuration(configuration);\n }\n}\n\nexport default Formatter;\n","import lowdashGet from 'lodash.get';\n\nimport MetadataConfiguration from './metadata_configuration';\n\nclass Configuration {\n metadata?: MetadataConfiguration;\n\n evaluate: boolean;\n\n constructor({ evaluate = false, metadata = { separator: ',' } }) {\n this.evaluate = evaluate;\n this.metadata = new MetadataConfiguration(metadata);\n }\n\n get(key: string) {\n return lowdashGet(this, key);\n }\n}\n\nexport default Configuration;\n","class MetadataConfiguration {\n separator?: string;\n\n constructor({ separator }: { separator: string}) {\n this.separator = separator;\n }\n}\n\nexport default MetadataConfiguration;\n","import Chord from './chord';\nimport { isPresent } from './utilities';\nimport Key from './key';\nimport { capos, majorKeys, minorKeys } from './key_config.json';\n\nexport function transposeDistance(transposeKey, songKey) {\n if (/^\\d+$/.test(transposeKey)) {\n return parseInt(transposeKey, 10);\n }\n\n return Key.distance(songKey, transposeKey);\n}\n\nfunction chordTransposeDistance(capo, transposeKey, songKey) {\n let transpose = -1 * (capo || 0);\n\n if (isPresent(transposeKey) && isPresent(songKey)) {\n transpose += transposeDistance(transposeKey, songKey);\n }\n return transpose;\n}\n\nexport function renderChord(chord, lineKey, transposeKey, song) {\n let chordObj = Chord.parse(chord);\n const { capo, key: songKey } = song;\n\n if (!chordObj) {\n return chord;\n }\n\n chordObj = chordObj.transpose(chordTransposeDistance(capo, transposeKey, songKey));\n\n if (isPresent(transposeKey)) {\n chordObj = chordObj.useModifier(transposeKey.modifier);\n }\n\n if (isPresent(lineKey)) {\n chordObj = chordObj.normalize(lineKey);\n }\n\n return chordObj.toString();\n}\n\n/**\n * Returns applicable capos for the provided key\n * @param {Key|string} key The key to get capos for\n * @returns {Object.<string, string>} The available capos, where the keys are capo numbers and the\n * values are the effective key for that capo.\n */\nexport function getCapos(key) {\n return capos[Key.toString(key)];\n}\n\n/**\n * Returns applicable keys to transpose to from the provided key\n * @param {Key|string} key The key to get keys for\n * @returns {Array<string>} The available keys\n */\nexport function getKeys(key) {\n const keyObj = Key.wrap(key);\n return keyObj.isMinor() ? minorKeys : majorKeys;\n}\n","{\n \"majorKeys\": [\"A\", \"Bb\", \"B\", \"C\", \"C#\", \"Db\", \"D\", \"Eb\", \"E\", \"F\", \"F#\", \"Gb\", \"G\", \"G#\", \"Ab\"],\n \"minorKeys\": [\"F#m\", \"Gm\", \"G#m\", \"Am\", \"Bbm\", \"Bm\", \"Cm\", \"C#m\", \"Dm\", \"D#m\", \"Ebm\", \"Em\", \"Fm\"],\n \"capos\": {\n \"Bb\": {\"1\": \"A\", \"3\": \"G\", \"6\": \"E\", \"8\": \"D\", \"10\": \"C\"},\n \"D\": {\"2\": \"C\", \"5\": \"A\", \"7\": \"G\", \"10\": \"E\"},\n \"Eb\": {\"1\": \"D\", \"3\": \"C\", \"6\": \"A\", \"8\": \"G\"},\n \"Db\": {\"1\": \"C\", \"4\": \"A\", \"6\": \"G\", \"9\": \"E\"},\n \"C#\": {\"1\": \"C\", \"4\": \"A\", \"6\": \"G\", \"9\": \"E\"},\n \"E\": {\"2\": \"D\", \"4\": \"C\", \"7\": \"A\", \"9\": \"G\"},\n \"F\": {\"1\": \"E\", \"3\": \"D\", \"5\": \"C\", \"6\": \"B\", \"8\": \"A\", \"10\": \"G\"},\n \"F#\": {\"2\": \"E\", \"4\": \"D\", \"6\": \"C\", \"7\": \"B\", \"9\": \"A\"},\n \"Gb\": {\"2\": \"E\", \"4\": \"D\", \"6\": \"C\", \"7\": \"B\", \"9\": \"A\"},\n \"G\": {\"3\": \"E\", \"5\": \"D\", \"7\": \"C\", \"8\": \"B\", \"10\": \"A\"},\n \"G#\": {\"1\": \"G\", \"4\": \"E\", \"6\": \"D\", \"8\": \"C\"},\n \"Ab\": {\"1\": \"G\", \"4\": \"E\", \"6\": \"D\", \"8\": \"C\"},\n \"A\": {\"2\": \"G\", \"5\": \"E\", \"7\": \"D\", \"9\": \"C\"},\n \"B\": {\"2\": \"A\", \"4\": \"G\", \"7\": \"E\", \"9\": \"D\"},\n \"C\": {\"3\": \"A\", \"5\": \"G\", \"8\": \"E\", \"10\": \"D\"},\n \"Am\": {\"3\": \"F#m\", \"5\": \"Em\", \"7\": \"Dm\"},\n \"Bbm\": {\"1\": \"Am\", \"4\": \"F#m\", \"6\": \"Em\", \"8\": \"Dm\"},\n \"Bm\": {\"2\": \"Am\", \"5\": \"F#m\", \"7\": \"Em\"},\n \"Cm\": {\"1\": \"Bm\", \"3\": \"Am\", \"6\": \"F#m\", \"8\": \"Em\"},\n \"C#m\": {\"2\": \"Bm\", \"4\": \"Am\", \"7\": \"F#m\", \"9\": \"Em\"},\n \"Dm\": {\"3\": \"Bm\", \"5\": \"Am\", \"8\": \"F#m\"},\n \"Ebm\": {\"1\": \"Dm\", \"4\": \"Bm\", \"6\": \"Am\"},\n \"D#m\": {\"1\": \"Dm\", \"4\": \"Bm\", \"6\": \"Am\"}\n }\n}\n","import ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Tag from './chord_sheet/tag';\nimport { INDETERMINATE, NONE } from './constants';\nimport { isEvaluatable } from './utilities';\n\ninterface EachCallback {\n (_item: any): string;\n}\n\ninterface WhenCallback {\n (): string;\n}\n\nexport { isEvaluatable } from './utilities';\n\nexport const isChordLyricsPair = (item) => item instanceof ChordLyricsPair;\n\nexport const lineHasContents = (line) => line.items.some((item) => item.isRenderable());\n\nexport const isTag = (item) => item instanceof Tag;\n\nexport const isComment = (item) => item.name === 'comment';\n\nexport function stripHTML(string: string): string {\n return string.trim().replace(/(<\\/[a-z]+>)\\s+(<)/g, '$1$2').replace(/(\\n)\\s+/g, '');\n}\n\nexport function each(collection: any[], callback: EachCallback) {\n return collection.map(callback).join('');\n}\n\nexport function when(condition: boolean, callback: WhenCallback) {\n return condition ? callback() : '';\n}\n\nexport const hasTextContents = (line) => (\n line.items.some((item) => (\n (item instanceof ChordLyricsPair && item.lyrics)\n || (item instanceof Tag && item.isRenderable())\n || isEvaluatable(item)\n ))\n);\n\nexport const lineClasses = (line) => {\n const classes = ['row'];\n\n if (!lineHasContents(line)) {\n classes.push('empty-line');\n }\n\n return classes.join(' ');\n};\n\nexport const paragraphClasses = (paragraph) => {\n const classes = ['paragraph'];\n\n if (paragraph.type !== INDETERMINATE && paragraph.type !== NONE) {\n classes.push(paragraph.type);\n }\n\n return classes.join(' ');\n};\n\nexport const evaluate = (item, metadata, configuration) => {\n if (!metadata) {\n throw new Error('cannot evaluate, metadata is null');\n }\n\n return item.evaluate(metadata, configuration.get('metadata.separator'));\n};\n","import HtmlFormatter from './html_formatter';\nimport template from './templates/html_table_formatter';\nimport { scopeCss } from '../utilities';\n\n/**\n * Basic CSS, in object style à la useStyles, to use with output generated by {@link }HtmlTableFormatter}\n * For a CSS string see {@link scopedCss}\n * @type {Object.<string, Object.<string, string>>}\n */\nexport const defaultCss = {\n h1: {\n fontSize: '1.5em',\n },\n h2: {\n fontSize: '1.1em',\n },\n table: {\n borderSpacing: '0',\n color: 'inherit',\n },\n td: {\n padding: '3px 0',\n },\n '.chord:not(:last-child)': {\n paddingRight: '10px',\n },\n '.paragraph': {\n marginBottom: '1em',\n },\n};\n\n/**\n * Generates basic CSS, scoped within the provided selector, to use with output generated by {@link HtmlTableFormatter}\n * @param scope the CSS scope to use, for example `.chordSheetViewer`\n * @returns {string} the CSS string\n */\nexport function scopedCss(scope) {\n return scopeCss(defaultCss, scope);\n}\n\n/**\n * Formats a song into HTML. It uses TABLEs to align lyrics with chords, which makes the HTML for things like\n * PDF conversion.\n */\nclass HtmlTableFormatter extends HtmlFormatter {\n /**\n * Formats a song into HTML.\n * @param {Song} song The song to be formatted\n * @returns {string} The HTML string\n */\n format(song) {\n return this.formatWithTemplate(song, template);\n }\n\n /**\n * Generates basic CSS, optionally scoped within the provided selector, to use with output generated by\n * {@link HtmlTableFormatter}\n *\n * For example, execute cssString('.chordSheetViewer') will result in CSS like:\n *\n * .chordSheetViewer .paragraph {\n * margin-bottom: 1em;\n * }\n *\n * @param scope the CSS scope to use, for example `.chordSheetViewer`\n * @returns {string} the CSS string\n */\n static cssString(scope = '') {\n return scopeCss(defaultCss, scope);\n }\n\n /**\n * Basic CSS, in object style à la useStyles, to use with output generated by {@link HtmlTableFormatter}\n * For a CSS string see {@link cssString}\n *\n * Example:\n *\n * '.paragraph': {\n * marginBottom: '1em'\n * }\n *\n * @return {Object.<string, Object.<string, string>>} the CSS object\n */\n static cssObject() {\n return defaultCss;\n }\n}\n\nexport default HtmlTableFormatter;\n","import Formatter from './formatter';\n\n/**\n * Acts as a base class for HTML formatters, taking care of whitelisting prototype property access.\n */\nclass HtmlFormatter extends Formatter {\n formatWithTemplate(song, template) {\n return template(\n {\n song,\n configuration: this.configuration,\n },\n );\n }\n}\n\nexport default HtmlFormatter;\n","import { hasChordContents, isEvaluatable } from '../../utilities';\nimport { renderChord } from '../../helpers';\n\nimport {\n each,\n evaluate,\n hasTextContents,\n isChordLyricsPair,\n isComment,\n isTag,\n lineClasses,\n lineHasContents,\n paragraphClasses,\n stripHTML,\n when,\n} from '../../template_helpers';\n\nexport default (\n {\n configuration,\n song,\n renderBlankLines = false,\n song: {\n title,\n subtitle,\n bodyParagraphs,\n bodyLines,\n metadata,\n },\n },\n): string => stripHTML(`\n ${ when(title, () => `<h1>${ title}</h1>`) }\n ${ when(subtitle, () => `<h2>${ subtitle}</h2>`) }\n\n ${ when(bodyLines.length > 0, () => `\n <div class=\"chord-sheet\">\n ${ each(bodyParagraphs, (paragraph) => `\n <div class=\"${ paragraphClasses(paragraph)}\">\n ${ each(paragraph.lines, (line) => `\n ${ when(renderBlankLines || lineHasContents(line), () => `\n <table class=\"${ lineClasses(line)}\">\n ${ when(hasChordContents(line), () => `\n <tr>\n ${ each(line.items, (item) => `\n ${ when(isChordLyricsPair(item), () => `\n <td class=\"chord\">${ \n renderChord(item.chords, line.key, line.transposeKey, song)\n }</td>\n `)}\n `)}\n </tr>\n `)}\n \n ${ when(hasTextContents(line), () => `\n <tr>\n ${ each(line.items, (item) => `\n ${ when(isChordLyricsPair(item), () => `\n <td class=\"lyrics\">${ item.lyrics}</td>\n `)}\n \n ${ when(isTag(item) && isComment(item), () => `\n <td class=\"comment\">${ item.value }</td>\n `)}\n \n ${ when(isEvaluatable(item), () => `\n <td class=\"lyrics\">${ evaluate(item, metadata, configuration) }</td>\n `) }\n `)}\n </tr>\n `)}\n </table>\n `)}\n `)}\n </div>\n `)}\n </div>\n `)}\n`);\n","import HtmlFormatter from './html_formatter';\nimport template from './templates/html_div_formatter';\nimport { scopeCss } from '../utilities';\n\nconst defaultCss = {\n '.chord:not(:last-child)': {\n paddingRight: '10px',\n },\n\n '.paragraph': {\n marginBottom: '1em',\n },\n\n '.row': {\n display: 'flex',\n },\n\n '.chord:after': {\n content: '\\'\\\\200b\\'',\n },\n\n '.lyrics:after': {\n content: '\\'\\\\200b\\'',\n },\n};\n\n/**\n * Formats a song into HTML. It uses DIVs to align lyrics with chords, which makes it useful for responsive web pages.\n */\nclass HtmlDivFormatter extends HtmlFormatter {\n /**\n * Formats a song into HTML.\n * @param {Song} song The song to be formatted\n * @returns {string} The HTML string\n */\n format(song) {\n return this.formatWithTemplate(song, template);\n }\n\n /**\n * Generates basic CSS, optionally scoped within the provided selector, to use with output generated by\n * {@link HtmlDivFormatter}\n *\n * For example, execute cssString('.chordSheetViewer') will result in CSS like:\n *\n * .chordSheetViewer .paragraph {\n * margin-bottom: 1em;\n * }\n *\n * @param scope the CSS scope to use, for example `.chordSheetViewer`\n * @returns {string} the CSS string\n */\n static cssString(scope = '') {\n return scopeCss(defaultCss, scope);\n }\n\n /**\n * Basic CSS, in object style à la useStyles, to use with output generated by {@link HtmlDivFormatter}\n *\n * Example:\n *\n * '.paragraph': {\n * marginBottom: '1em'\n * }\n *\n * For a CSS string see {@link cssString}\n * @return {Object.<string, Object.<string, string>>} the CSS object\n */\n static cssObject() {\n return defaultCss;\n }\n}\n\nexport default HtmlDivFormatter;\n","import { renderChord } from '../../helpers';\n\nimport {\n each, evaluate,\n isChordLyricsPair,\n isComment,\n isEvaluatable,\n isTag,\n lineClasses,\n lineHasContents,\n paragraphClasses,\n stripHTML, when,\n} from '../../template_helpers';\n\nexport default (\n {\n configuration,\n song,\n renderBlankLines = false,\n song: {\n title,\n subtitle,\n bodyParagraphs,\n metadata,\n },\n },\n): string => stripHTML(`\n ${ when(title, () => `<h1>${ title }</h1>`) }\n ${ when(subtitle, () => `<h2>${ subtitle }</h2>`) }\n \n <div class=\"chord-sheet\">\n ${ each(bodyParagraphs, (paragraph) => `\n <div class=\"${ paragraphClasses(paragraph) }\">\n ${ each(paragraph.lines, (line) => `\n ${ when(renderBlankLines || lineHasContents(line), () => `\n <div class=\"${ lineClasses(line) }\">\n ${ each(line.items, (item) => `\n ${ when(isChordLyricsPair(item), () => `\n <div class=\"column\">\n <div class=\"chord\">${ renderChord(item.chords, line.key, line.transposeKey, song) }</div>\n <div class=\"lyrics\">${ item.lyrics }</div>\n </div>\n `) }\n \n ${ when(isTag(item) && isComment(item), () => `<div class=\"comment\">${ item.value }</div>`) }\n \n ${ when(isEvaluatable(item), () => `\n <div class=\"column\">\n <div class=\"chord\"></div>\n <div class=\"lyrics\">${ evaluate(item, metadata, configuration) }</div>\n </div>\n `) }\n `) }\n </div>\n `) }\n `) }\n </div>\n `) }\n </div>\n`);\n","import Formatter from './formatter';\nimport Tag from '../chord_sheet/tag';\nimport ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\nimport Ternary from '../chord_sheet/chord_pro/ternary';\nimport Literal from '../chord_sheet/chord_pro/literal';\n\nconst NEW_LINE = '\\n';\n\n/**\n * Formats a song into a ChordPro chord sheet\n */\nclass ChordProFormatter extends Formatter {\n /**\n * Formats a song into a ChordPro chord sheet.\n * @param {Song} song The song to be formatted\n * @returns {string} The ChordPro string\n */\n format(song) {\n const { lines, metadata } = song;\n\n return lines\n .map((line) => this.formatLine(line, metadata))\n .join(NEW_LINE);\n }\n\n formatLine(line, metadata) {\n return line.items\n .map((item) => this.formatItem(item, metadata))\n .join('');\n }\n\n formatItem(item, metadata) {\n if (item instanceof Tag) {\n return this.formatTag(item);\n }\n\n if (item instanceof ChordLyricsPair) {\n return this.formatChordLyricsPair(item);\n }\n\n if (typeof item.evaluate === 'function') {\n return this.formatOrEvaluateItem(item, metadata);\n }\n\n throw new Error(`Don't know how to format a ${item.constructor.name}`);\n }\n\n formatOrEvaluateItem(item, metadata) {\n if (this.configuration.evaluate) {\n return item.evaluate(metadata, this.configuration.get('metadata.separator'));\n }\n\n if (item instanceof Ternary) {\n return this.formatTernary(item);\n }\n\n if (item instanceof Literal) {\n return item.evaluate();\n }\n\n throw new Error(`Don't know how to format a ${item.constructor.name}`);\n }\n\n formatTernary(ternary) {\n const {\n variable,\n valueTest,\n trueExpression,\n falseExpression,\n } = ternary;\n\n return [\n '%{',\n variable || '',\n this.formatValueTest(valueTest),\n this.formatExpressionRange(trueExpression),\n this.formatExpressionRange(falseExpression),\n '}',\n ].join('');\n }\n\n formatValueTest(valueTest) {\n if (!valueTest) {\n return '';\n }\n\n return `=${valueTest}`;\n }\n\n formatExpressionRange(expressionRange) {\n if (!expressionRange) {\n return '';\n }\n\n return `|${expressionRange.map((expression) => this.formatExpression(expression)).join('')}`;\n }\n\n formatExpression(expression) {\n if (expression instanceof Ternary) {\n return this.formatTernary(expression);\n }\n\n if (expression instanceof Literal) {\n return expression.string;\n }\n\n return '';\n }\n\n formatTag(tag) {\n if (tag.hasValue()) {\n return `{${tag.originalName}: ${tag.value}}`;\n }\n\n return `{${tag.originalName}}`;\n }\n\n formatChordLyricsPair(chordLyricsPair) {\n return [\n this.formatChordLyricsPairChords(chordLyricsPair),\n this.formatChordLyricsPairLyrics(chordLyricsPair),\n ].join('');\n }\n\n formatChordLyricsPairChords(chordLyricsPair) {\n if (chordLyricsPair.chords) {\n return `[${chordLyricsPair.chords}]`;\n }\n\n return '';\n }\n\n formatChordLyricsPairLyrics(chordLyricsPair) {\n return chordLyricsPair.lyrics || '';\n }\n}\n\nexport default ChordProFormatter;\n"],"names":[],"version":3,"file":"index.js.map"}
|