github.com/expr-lang/expr@v1.16.9/parser/utils/utils.go (about) 1 package utils 2 3 import ( 4 "unicode" 5 "unicode/utf8" 6 ) 7 8 func IsValidIdentifier(str string) bool { 9 if len(str) == 0 { 10 return false 11 } 12 h, w := utf8.DecodeRuneInString(str) 13 if !IsAlphabetic(h) { 14 return false 15 } 16 for _, r := range str[w:] { 17 if !IsAlphaNumeric(r) { 18 return false 19 } 20 } 21 return true 22 } 23 24 func IsSpace(r rune) bool { 25 return unicode.IsSpace(r) 26 } 27 28 func IsAlphaNumeric(r rune) bool { 29 return IsAlphabetic(r) || unicode.IsDigit(r) 30 } 31 32 func IsAlphabetic(r rune) bool { 33 return r == '_' || r == '$' || unicode.IsLetter(r) 34 }