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