summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-14 21:30:25 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-14 21:30:25 +0100
commit67fe3accd91cf49cd74854e5ffb62539fc2075d4 (patch)
treec35e26f1d79df1d8bfabf4ab8fb2dbbba9929af4
parent3e9a68f0235158f5ee2c70cb6b319b26e42fd810 (diff)
Fix handling of digits in lowerCamelCase strings
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java4
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java2
2 files changed, 4 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java b/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
index ef002ba..6519ec5 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
@@ -18,7 +18,7 @@ public class Casing {
for (var characterIndex = 0; characterIndex < lowerCamelCase.length(); characterIndex++) {
var character = lowerCamelCase.charAt(characterIndex);
- if (Character.isUpperCase(character) || Character.isDigit(character)) {
+ if (Character.isUpperCase(character) || (Character.isDigit(character) && !Character.isDigit(lowerCamelCase.charAt(characterIndex - 1)))) {
upperCase.append('_');
upperCase.append(character);
} else {
@@ -34,7 +34,7 @@ public class Casing {
for (var characterIndex = 0; characterIndex < lowerCamelCase.length(); characterIndex++) {
var character = lowerCamelCase.charAt(characterIndex);
- if (Character.isUpperCase(character) || Character.isDigit(character)) {
+ if (Character.isUpperCase(character) || (Character.isDigit(character) && !Character.isDigit(lowerCamelCase.charAt(characterIndex - 1)))) {
snakeCase.append('_');
}
snakeCase.append(Character.toLowerCase(character));
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java
index 4d8c9c4..4344ac1 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java
@@ -29,6 +29,7 @@ public class CasingTests {
"abcDef,ABC_DEF",
"abDeFg,AB_DE_FG",
"a0,A_0",
+ "a123,A_123",
})
public void lowerCamelCaseToUpperCase(String lowerCamelCase, String expectedUpperCase) {
var result = Casing.lowerCamelCaseToUpperCase(lowerCamelCase);
@@ -43,6 +44,7 @@ public class CasingTests {
"abcDef,abc_def",
"abDeFg,ab_de_fg",
"a0,a_0",
+ "a123,a_123",
})
public void lowerCamelCaseToSnakeCase(String lowerCamelCase, String expectedUpperCase) {
var result = Casing.lowerCamelCaseToSnakeCase(lowerCamelCase);