...
1 package main
2
3 import (
4 "regexp"
5 "strings"
6 )
7
8
9
10 var allCaps = regexp.MustCompile("^[A-Z0-9]+$")
11
12
13 func popCount(mask uint) uint {
14 m := uint32(mask)
15 n := uint(0)
16 for i := uint32(0); i < 32; i++ {
17 if m&(1<<i) != 0 {
18 n++
19 }
20 }
21 return n
22 }
23
24
25 func pad(n int) int {
26 return (n + 3) & ^3
27 }
28
29
30
31 func splitAndTitle(s string) string {
32
33 if allCaps.MatchString(s) {
34 return strings.Title(strings.ToLower(s))
35 }
36
37
38 if i := strings.Index(s, "_"); i == -1 {
39 return strings.Title(s)
40 }
41
42
43
44 chunks := strings.Split(s, "_")
45 for i, chunk := range chunks {
46 chunks[i] = strings.Title(strings.ToLower(chunk))
47 }
48 return strings.Join(chunks, "")
49 }
50
View as plain text