From 79721bda16ed9a941a714f1cdb1db9b1cf40316c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 3 Jul 2026 14:49:47 +0100 Subject: Add upperCamelCaseToSnakeCase() --- .../java/org/zwobble/hobgoblin/compiler/util/Casing.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/main/java') 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(); + } } -- cgit v1.2.3