From 2be13c5ec31f067bb8f630d48a1fe435d253ce5e Mon Sep 17 00:00:00 2001 From: dotmg Date: Fri, 19 Sep 2025 08:00:54 +0200 Subject: [PATCH] BugFix: ${O:} along with ${R=} --- .../commonMain/composeResources/files/ffpm-210.txt | 13 +++++++++++++ .../commonMain/composeResources/files/ffpm-558.txt | 10 ++++++++++ .../commonMain/composeResources/files/ffpm-563.txt | 12 ++++++++++++ .../commonMain/composeResources/files/ffpm-564.txt | 9 +++++++++ .../commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt | 11 ++++++----- 5 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-210.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-558.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-563.txt create mode 100644 composeApp/src/commonMain/composeResources/files/ffpm-564.txt diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-210.txt b/composeApp/src/commonMain/composeResources/files/ffpm-210.txt new file mode 100644 index 0000000..db60ca4 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-210.txt @@ -0,0 +1,13 @@ +M0:|c:Ab|m:4/4|t:FFPM 210 Zava-tsoa tokoa ny fitsipika|a:G. Ravelo 1886-1961|h:(Feon-kira anglisy)|r:10.7.10.7.12.10.12.10 +U0:z0:${x2} 2222422 448/ 222244G/ ${x0} 2222224 22228/ 2222(44) 22228/ 2222224 22228/ 2222(22)22 (22)(22)8 +N1:#s, mrdlsdtlds/ ddtdmdr/ mfmrdllrdt/ drs'mtls/ mwwwmwwmwmwffwwwfwfwfwm/ sFlsm, sddtrdl/ rrsfmslfmwrwd +N2:#m, mmffmssffm/ s5Fs/ SSttlmmlFs/ Fs4Fs/ sFlsmsddtdlt/ sltdrtltlms/ z12/ s5wflswfwm +N3:#s, sslld6/ mmfmddt/ ttmmmddrrr/ drrmrdt/ dwwwdwwdwdwr/ rwwwrwrwrwd/ z12/ rtdrmwdddtltd +N4:#d, d5mmfl#m, d/ ddrdlls/ mmSSlllFr, s/ lttdrr, s/#d, dwwwdwwdwdwr/ swwwswswswd/ z12/ tsltd'mfrswswd +O1:v2:Soa tsy manam-paharoa/Ny fitsipikao/Iravo_anay fa harena be +O2:v1:Sarobidy tsy hafoy/I\zany didinao +Y1:Zava-tsoa tokoa ny fitsipikao;/Tompo Andriamanitra\ ô!/Teny mahasoa, aina, hery koa/Mba ho an'izay manoa./${R=}${O:1}I_4ra_3vo_2a_nay/Fa_4ha_rena_2be/${O:2}_12Famonjena ho an'izay mandre +Y2:Maizina\ izahay, kely fantatray,/Nefa ao ny teninao:/Jiro sy fanilon'ny tongotray/Hankanesana\ Aminao +Y3:Ra\ha alaim-pana\hy i\tony zanakao/Indro, ao ny teninao/Sabatry ny fo, hanoheranay/Ilay ratsy hatrizay +Y4:Fifali_anay, odi-tahotray/Ny Baiboly taminao:/Avy ny manjo, nefa kosa, Ray/Ao tokoa ny tavanao +Y5:Ry Jesosy ô, Mpampi_anatray!/Maminay ny teninao;/Taomy izahay, mba hahaizanay/Hankatò ny didinao/ diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-558.txt b/composeApp/src/commonMain/composeResources/files/ffpm-558.txt new file mode 100644 index 0000000..804b769 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-558.txt @@ -0,0 +1,10 @@ +M0:|c:C|m:4/4 Miadanadana|a:P. Nilsen-Lund 1842-1914|h:P. Nilsen-Lund 1842-1914|t:FFPM 558 Ity fonenana ity|r:8.8.8.8.10.8 +U0:zC:z22 622222 4/z22 622222 ${DC}$Q4/ z22 622222 22$Q4/z2222 6262 E +N1:#m ssmd,msdlfllssfsm ssltdrm'dlf fllsstsd +N2:mmd4md6rrd rrfslssffd fffmmffm +N3:#m s5msf lffmmsss ttdrdtdldl ld4sss +N4:dddmdddf 3f,s,3t,d sssfmrdfff dddsss,s,d +Y1:Ity fonenana ity/Tsy manam-pitsaharana;/${D:Maniry aho ho arỳ/An-ko_atry ny fasana,/}Ny lanitra no hitodi_ako,/Fa tena tanindrazako. +Y2:Kanefa mahatahotra/Ny ranobe alehako,/${D:Fa ny tafi_o-drivotra/Manohitra ny samboko,/}Ny tselatra, ny kotrokorana,/Mamely sy mandrahona. +Y3:Ny sambon’ny fi_ainako/Mamaky onja sarotra,/${D:Ka amin’ny alehako/Mitopatopa fatratra/}Ny alondranom-pahori_ana,/Kanefa tsy maninona. +Y4:Fa ny Mpamonjy tokana/Mitarika ny samboko;/${D:Ny Tompon’ny fi_ainana/Mi_ara-mita amiko,/}Mba ho tafita aho olony,/Ka honina\ any Aminy. diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-563.txt b/composeApp/src/commonMain/composeResources/files/ffpm-563.txt new file mode 100644 index 0000000..81736fe --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-563.txt @@ -0,0 +1,12 @@ +M0:|t:FFPM 563 Ry mana-manjo|c:Eb|m:3/4 Miadana|a:J. Richardson 1844-1922|h:PACCHUCA (Old St. Company, p76)|u:https://hymnary.org/tune/pachuca_33132 +U0:z8:4 444 8/4 444 8/4 444 444 C8 +N1:mmdmr rsrfm slflsmdrd +N2:d4t,4rd d7t,d +N3:ssmss srsss mflfssmfm +N4:d4s,5d dfffmdds,d +Y1:Ry mana-manjo!/Akaiky anao,/Ny Tompo, I\lay be fi_antrana +Y2:Ka Izy anie/Hitahy anao,/Hanafaka ny mampahory. +Y3:Ny ory atỳ/Ho faly arỳ,/Ka aza mba be alahelo. +Y4:Ny Tomponao re/Hanefa tokoa/I\zay hataky ny malahelo. +Y5:Ny lapany ao/Voavoatra ho\ anao/Honenanao mandrakizay re. +Si un dia el dolor te oprime oh mortal diff --git a/composeApp/src/commonMain/composeResources/files/ffpm-564.txt b/composeApp/src/commonMain/composeResources/files/ffpm-564.txt new file mode 100644 index 0000000..bf7044c --- /dev/null +++ b/composeApp/src/commonMain/composeResources/files/ffpm-564.txt @@ -0,0 +1,9 @@ +M0:|t:FFPM 564 Tsy hita izay androko sisa ety|c:Bb|m:6/4 Miadana 2/|r:10.10.12.8.8.8.12.8|a:J. Andrianaivoravelona 1835-1897|h:James McGranahan 1840-1907|u:https://hymnary.org/tune/i_know_not_the_hour_when_my_mcgranahan +U0:zK:4 444444 (44)48/(22) 4448(22) 4448/22 444444 444$Q8/4 444444 K/4 444444 444444 444444 (4448)/22 444444 444$Q8/4 44444 4K +N1:#f, ssFsmrddtls sssfm,f lllsFs sssFsmrddrmf' fm4rdr sd4rml-4 lr4dls-3 sssFsmrddrmf' f'mmms'f'rd +N2:#d, mmRmsfmlsfm mmmrDr fffmRm mmmRmsfmmfsl ls4fmf fm4fsf-4 fF6srmf ffmRmsfmmfsl ls5fm +N3:#m, sslsd--d--d d-t--t--d-ls d-slsd--d--d dd--dtlt z6d7 rl4dt-dr rrd14ttts +N4:#d, dd--d--d--d dms--s--d--- d-d--d--d--f fs--s--s z6df6 r6s--- ssd9f fs6d +Y1:Tsy hita\ izay androko sisa\ atỳ,/Ahiko fandrao tsy tonga arỳ,/Ry fanahiko! Ao ny Mpamonjy anao,/He! Jeso, Mpamonjy anao./He! Jeso, Mpamonjy anao._4/He! Jeso, Mpamonjy anao./Ry fanahiko! Ao ny Mpamonjy anao,/He! Jeso Mpamonjy anao. +Y2:Izaho anefa tamàna\ atỳ;/Tsy hiomana va, fa\ hifindra arỳ?/Fa\ efa fantatro i\zao, fa havela ity,/He! Lanitra so_a arỳ./He! Lanitra so_a arỳ._4/He! Lanitra so_a arỳ./Fa\ efa fantatro i\zao fa havela ity,/He! Lanitra soa arỳ. +Y3:Ilaozy ity, hadinoy, ry fo!/Afoizo izao, ry fanahiko\ ô!/Fa\ efa reko ny Tompo/Mi_antso anao,/He! Feo mahafaly izao.He! Feo mahafaly izao._3//He! Feo mahafaly izao./Fa\ efa reko ny Tompo/Mi_antso anao,/He! Feo mahafaly izao. diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt index ec0c2c4..f428ab7 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt @@ -34,10 +34,10 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository val REGEX_REPETITION = Regex("([zwdrmfslt-](?>[',]*))([1-9][0-9]*)", RegexOption.IGNORE_CASE) val REGEX_PARSE_META = Regex("\\|(?=[a-z]:)") val REGEX_LYRICS_COMMENT = Regex("\\$\\{([^\\}][^:]*:([^\\}]*))\\}|\\$\\{R!\\}") - val REGEX_LYRICS_REPETITION = Regex("_(\\d)") + val REGEX_LYRICS_REPETITION = Regex("_(\\d+)") val REGEX_VOWELS_STAGE1 = Regex("[aeiouyòàéìỳ](?![,;\\.\\-:!\\?\\}»_\"]*([ aeiouyòàéìỳ/]|_[1-9]))", RegexOption.IGNORE_CASE) val REGEX_VOWELS_STAGE2 = Regex("(?<=[aeiouyòàéìỳ])_([,;\\.\\-:!\\?\\}»_\"]+)", RegexOption.IGNORE_CASE) - val REGEX_VOWELS_STAGE3 = Regex("_([\\?\\!:,;\\.»\\)]+)") + val REGEX_VOWELS_STAGE3 = Regex("_([\\?\\!:,;\\.»\\)]+|(\\$\\{[^\\}]*\\})+)") val REGEX_MALAGASY_MN = Regex("([aeio])_([nm])([tdjkbp])") val REGEX_MALAGASY_MN_STAGE2 = Regex("_([mn])-") val REGEX_PAREN_RECURSIVE = Regex("(\\([^\\(\\)]*)\\(([^\\)]*)\\)") @@ -612,8 +612,9 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository val arrayLyrics = lyrics.split(Regex("[/_]")) arrayLyrics.forEachIndexed { i, lyricsItem -> val originalLyrics = REGEX_STRIP_DC.replace(lyricsItem, "") - if (lyricsItem.length > 4 && lyricsItem.substring(0, 4) == $$"${O:") { - val overrideNumber = lyricsItem.replace(Regex("\\D"), "").toIntOrNull() ?: -1 + val REGEX_OVERRIDE = Regex(".*\\$\\{O:(\\d+)\\}.*") + if (REGEX_OVERRIDE.matches(lyricsItem)) { + val overrideNumber = lyricsItem.replace(REGEX_OVERRIDE, "$1").toInt() val override = O.getOrElse(overrideNumber) { null } override?.forEachIndexed { index, value -> val matchResult = Regex("v(\\d+):(.*)").find(value) @@ -684,7 +685,7 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository val commentsIterator = comments.iterator() val loadedLyrics = lyrics .replace(REGEX_VOWELS_STAGE1, "$0_") - .replace(REGEX_VOWELS_STAGE2, "$1_") + .replace(REGEX_VOWELS_STAGE2, "$1_") .replace(REGEX_VOWELS_STAGE3, "$1_") .replace(" ", " _") .replace("_\\ _", " ")