Переглянути джерело

fix(lyrics Placement): fix support for Sibelius format (#583)

the code was there, but didn't get executed because parseInt doesn't throw an error,
but returns NaN.

fix #583
Simon Schmid 5 роки тому
батько
коміт
084f3082a1

+ 7 - 2
src/MusicalScore/ScoreIO/MusicSymbolModules/LyricsReader.ts

@@ -65,11 +65,16 @@ export class LyricsReader {
                                 }
                             }
                             let currentLyricVerseNumber: number = 1;
+                            let errorNumberParse1: boolean = false;
                             if (lyricNode.attributes() !== undefined && lyricNode.attribute("number") !== undefined) {
                                 try {
-                                    currentLyricVerseNumber = parseInt(lyricNode.attribute("number").value, 10);
+                                    currentLyricVerseNumber = parseInt(lyricNode.attribute("number").value, 10); // usually doesn't throw error, but returns NaN
                                 } catch (err) {
-                                    try {
+                                    errorNumberParse1 = true;
+                                }
+                                errorNumberParse1 = errorNumberParse1 || isNaN(currentLyricVerseNumber);
+                                if (errorNumberParse1) {
+                                    try { // Sibelius format: "part1verse1"
                                         const result: string[] = lyricNode.attribute("number").value.toLowerCase().split("verse");
                                         if (result.length > 1) {
                                             currentLyricVerseNumber = parseInt(result[1], 10);