summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-14 21:31:41 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-14 21:31:41 +0100
commite55af8bb139e6db7fda83541119ab996507562d9 (patch)
tree477ac058f477f0232c6f0d9184d0f48f440ffeaf /src
parent67fe3accd91cf49cd74854e5ffb62539fc2075d4 (diff)
Fix handling of digits in UpperCamelCase strings
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java2
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java1
2 files changed, 2 insertions, 1 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 6519ec5..7e69435 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
@@ -48,7 +48,7 @@ public class Casing {
for (var characterIndex = 0; characterIndex < lowerCamelCase.length(); characterIndex++) {
var character = lowerCamelCase.charAt(characterIndex);
- if (characterIndex != 0 && Character.isUpperCase(character) || Character.isDigit(character)) {
+ if (characterIndex != 0 && 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 4344ac1..69414e9 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java
@@ -59,6 +59,7 @@ public class CasingTests {
"AbcDef,abc_def",
"AbDeFg,ab_de_fg",
"A0,a_0",
+ "A123,a_123",
})
public void upperCamelCaseToSnakeCase(String lowerCamelCase, String expectedUpperCase) {
var result = Casing.upperCamelCaseToSnakeCase(lowerCamelCase);