package utils import ( "strings" "unicode" ) func Camelize(s string) string { // If input has no delimiters, assume it's already in camelCase or PascalCase if !strings.ContainsAny(s, "_- ") { return s[:1] + s[1:] // No change (optionally lowercase first letter: strings.ToLower(s[:1]) + s[1:]) } // Otherwise, split and camelCase it parts := strings.FieldsFunc(s, func(r rune) bool { return r == '_' || r == '-' || unicode.IsSpace(r) }) if len(parts) == 0 { return "" } var b strings.Builder b.WriteString(strings.ToLower(parts[0])) for _, part := range parts[1:] { if len(part) == 0 { continue } b.WriteString(strings.ToUpper(part[:1])) if len(part) > 1 { b.WriteString(part[1:]) } } return b.String() }