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:
@@ -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'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user