summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-03 14:49:47 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-03 14:49:47 +0100
commit79721bda16ed9a941a714f1cdb1db9b1cf40316c (patch)
tree9d4161c382a07a9cbc9135b9352a814eba767e56 /src/main
parent2f5a6c085d084c73c11017babb0de90c59044767 (diff)
Add upperCamelCaseToSnakeCase()
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java14
1 files changed, 14 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 3705f99..ef002ba 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/util/Casing.java
@@ -42,4 +42,18 @@ public class Casing {
return snakeCase.toString();
}
+
+ public static String upperCamelCaseToSnakeCase(String lowerCamelCase) {
+ var snakeCase = new StringBuilder();
+
+ for (var characterIndex = 0; characterIndex < lowerCamelCase.length(); characterIndex++) {
+ var character = lowerCamelCase.charAt(characterIndex);
+ if (characterIndex != 0 && Character.isUpperCase(character) || Character.isDigit(character)) {
+ snakeCase.append('_');
+ }
+ snakeCase.append(Character.toLowerCase(character));
+ }
+
+ return snakeCase.toString();
+ }
}