go-mongo/utils/camelize.go

38 lines
749 B
Go

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()
}