Fix binapigen decoding and minor improvements
[govpp.git] / binapigen / strings.go
similarity index 92%
rename from binapigen/definitions.go
rename to binapigen/strings.go
index 3c8a874..1ab24e9 100644 (file)
 package binapigen
 
 import (
+       "go/token"
        "strings"
        "unicode"
+       "unicode/utf8"
 )
 
 // commonInitialisms is a set of common initialisms that need to stay in upper case.
@@ -74,7 +76,8 @@ var specialInitialisms = map[string]string{
 }
 
 func usesInitialism(s string) string {
-       if u := strings.ToUpper(s); commonInitialisms[u] {
+       u := strings.ToUpper(s)
+       if commonInitialisms[u] {
                return u
        } else if su, ok := specialInitialisms[u]; ok {
                return su
@@ -151,3 +154,12 @@ func camelCaseName(name string) (should string) {
        }
        return string(runes)
 }
+
+// sanitizedName returns the string converted into a valid Go identifier.
+func sanitizedName(s string) string {
+       r, _ := utf8.DecodeRuneInString(s)
+       if token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) {
+               return s + "s"
+       }
+       return s
+}