From 891b69d3daf6bf2e25f4147476b66ea46ffcf9b4 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Mon, 22 Jan 2024 18:35:54 +0100 Subject: [PATCH] Additional rules for BeautifyClassName(). --- language.version | 4 ++-- zscript/utility/swwm_utility_string.zsc | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/language.version b/language.version index 479d79ccb..5989e4df9 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1095 \cu(Thu 18 Jan 13:17:52 CET 2024)\c-"; -SWWM_SHORTVER="\cw1.3pre r1095 \cu(2024-01-18 13:17:52)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1096 \cu(Mon 22 Jan 18:35:54 CET 2024)\c-"; +SWWM_SHORTVER="\cw1.3pre r1096 \cu(2024-01-22 18:35:54)\c-"; diff --git a/zscript/utility/swwm_utility_string.zsc b/zscript/utility/swwm_utility_string.zsc index 063ef7f9a..ffb213cd9 100644 --- a/zscript/utility/swwm_utility_string.zsc +++ b/zscript/utility/swwm_utility_string.zsc @@ -127,7 +127,7 @@ extend Class SWWMUtility str.AppendCharacter(cp1); if ( i < len-1 ) { - int cp2 = workstr.GetNextCodePoint(pos); + let [cp2, pos2] = workstr.GetNextCodePoint(pos); // this looks awkward, but I have to also account for non-letter characters // uppercase after lowercase if ( (String.CharUpper(cp1) != cp1) && (String.CharLower(cp2) != cp2) ) @@ -135,9 +135,19 @@ extend Class SWWMUtility // uppercase after non-letter else if ( (String.CharUpper(cp1) == cp1) && (String.CharLower(cp1) == cp1) && (String.CharLower(cp2) != cp2) ) str.AppendCharacter(0x20); + // lowercase after non-letter + if ( (String.CharUpper(cp1) == cp1) && (String.CharLower(cp1) == cp1) && (String.CharUpper(cp2) != cp2) ) + str.AppendCharacter(0x20); // non-letter after lowercase else if ( (String.CharUpper(cp1) != cp1) && (String.CharLower(cp2) == cp2) && (String.CharUpper(cp2) == cp2) ) str.AppendCharacter(0x20); + if ( i < len-2 ) + { + let [cp3, pos3] = workstr.GetNextCodePoint(pos2); + // uppercase before uppercase before lowercase + if ( (String.CharLower(cp1) != cp1) && (String.CharLower(cp2) != cp2) && (String.CharUpper(cp3) != cp3) ) + str.AppendCharacter(0x20); + } } } }