style.go 574 B

12345678910111213141516171819202122232425262728293031323334
  1. package util
  2. // CamelCase convert to Camel-Case
  3. func CamelCase(name string) string {
  4. if len(name) == 0 {
  5. return name
  6. }
  7. if name[0] == '_' {
  8. return name
  9. }
  10. input := []byte(name)
  11. ret := make([]byte, 0, len(input))
  12. toUpper := func(c byte) byte {
  13. if 'a' <= c && c <= 'z' {
  14. c -= 32
  15. }
  16. return c
  17. }
  18. ret = append(ret, toUpper(input[0]))
  19. underline := false
  20. for _, c := range input[1:] {
  21. switch {
  22. case c == '_':
  23. underline = true
  24. default:
  25. if underline {
  26. c = toUpper(c)
  27. }
  28. ret = append(ret, c)
  29. underline = false
  30. }
  31. }
  32. return string(ret)
  33. }