summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-06-19 18:37:51 +0100
committerMichael Williamson <mike@zwobble.org>2026-06-19 18:37:51 +0100
commite2984c27ab2a915037fc0d9aaa9426894a7ad781 (patch)
tree396b77c0e05f1dac210b2c64bfdb6c9c09110948 /src
parentf4bccfa54ba5158d00f866d4265a04cb049f7dbd (diff)
Add lowerCamelCaseToUpperCase
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java16
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java22
2 files changed, 38 insertions, 0 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 80b8459..1b962a4 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
@@ -8,4 +8,20 @@ public class Casing {
public static String lowerCamelCaseToUpperCamelCase(String name) {
return name.substring(0, 1).toUpperCase(Locale.ROOT) + name.substring(1);
}
+
+ public static String lowerCamelCaseToUpperCase(String lowerCamelCase) {
+ var upperCase = new StringBuilder();
+
+ for (var characterIndex = 0; characterIndex < lowerCamelCase.length(); characterIndex++) {
+ var character = lowerCamelCase.charAt(characterIndex);
+ if (Character.isUpperCase(character)) {
+ upperCase.append('_');
+ upperCase.append(character);
+ } else {
+ upperCase.append(Character.toUpperCase(character));
+ }
+ }
+
+ return upperCase.toString();
+ }
}
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java
new file mode 100644
index 0000000..1441811
--- /dev/null
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/util/CasingTests.java
@@ -0,0 +1,22 @@
+package org.zwobble.hobgoblin.compiler.util;
+
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+
+import static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.equalTo;
+
+public class CasingTests {
+ @ParameterizedTest
+ @CsvSource({
+ "a,A",
+ "abc,ABC",
+ "abcDef,ABC_DEF",
+ "abDeFg,AB_DE_FG",
+ })
+ public void lowerCamelCaseToUpperCase(String lowerCamelCase, String expectedUpperCase) {
+ var result = Casing.lowerCamelCaseToUpperCase(lowerCamelCase);
+
+ assertThat(result, equalTo(expectedUpperCase));
+ }
+}