summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);