camelToSnake converts MixedCase / camelCase to snake_case. ASCII only; proto method names never contain non-ASCII.
(s string)
| 98 | // camelToSnake converts MixedCase / camelCase to snake_case. ASCII only; |
| 99 | // proto method names never contain non-ASCII. |
| 100 | func camelToSnake(s string) string { |
| 101 | var b strings.Builder |
| 102 | for i, r := range s { |
| 103 | if i > 0 && r >= 'A' && r <= 'Z' { |
| 104 | b.WriteByte('_') |
| 105 | } |
| 106 | if r >= 'A' && r <= 'Z' { |
| 107 | b.WriteRune(r + ('a' - 'A')) |
| 108 | } else { |
| 109 | b.WriteRune(r) |
| 110 | } |
| 111 | } |
| 112 | return b.String() |
| 113 | } |