initial commit. not currently in a working state.
This commit is contained in:
44
nexgb/xgbgen/misc.go
Normal file
44
nexgb/xgbgen/misc.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// AllCaps is a regex to test if a string identifier is made of
|
||||
// all upper case letters.
|
||||
var AllCaps = regexp.MustCompile("^[A-Z0-9]+$")
|
||||
|
||||
// popCount counts number of bits 'set' in mask.
|
||||
func popCount(mask uint) uint {
|
||||
m := uint32(mask)
|
||||
n := uint(0)
|
||||
for i := uint32(0); i < 32; i++ {
|
||||
if m&(1<<i) != 0 {
|
||||
n++
|
||||
}
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
// splitAndTitle takes a string, splits it by underscores, capitalizes the
|
||||
// first letter of each chunk, and smushes'em back together.
|
||||
func splitAndTitle(s string) string {
|
||||
// If the string is all caps, lower it and capitalize first letter.
|
||||
if AllCaps.MatchString(s) {
|
||||
return strings.Title(strings.ToLower(s))
|
||||
}
|
||||
|
||||
// If the string has no underscores, leave it be.
|
||||
if i := strings.Index(s, "_"); i == -1 {
|
||||
return s
|
||||
}
|
||||
|
||||
// Now split the name at underscores, capitalize the first
|
||||
// letter of each chunk, and smush'em back together.
|
||||
chunks := strings.Split(s, "_")
|
||||
for i, chunk := range chunks {
|
||||
chunks[i] = strings.Title(strings.ToLower(chunk))
|
||||
}
|
||||
return strings.Join(chunks, "")
|
||||
}
|
||||
Reference in New Issue
Block a user