Optimize model naming (#910)

* add unit test

* fix #907

* format code

* format code

* format code

Co-authored-by: anqiansong <anqiansong@xiaoheiban.cn>
This commit is contained in:
anqiansong
2021-08-18 17:09:34 +08:00
committed by GitHub
parent a1fe8bf6cd
commit b2fea65faa
8 changed files with 230 additions and 15 deletions

View File

@@ -32,3 +32,35 @@ func Index(slice []string, item string) int {
return -1
}
// SafeString converts the input string into a safe naming style in golang
func SafeString(in string) string {
if len(in) == 0 {
return in
}
data := strings.Map(func(r rune) rune {
if isSafeRune(r) {
return r
}
return '_'
}, in)
headRune := rune(data[0])
if isNumber(headRune) {
return "_" + data
}
return data
}
func isSafeRune(r rune) bool {
return isLetter(r) || isNumber(r) || r == '_'
}
func isLetter(r rune) bool {
return 'A' <= r && r <= 'z'
}
func isNumber(r rune) bool {
return '0' <= r && r <= '9'
}