move gotd fork into repo. (#111)
- update to latest telegram layer - remove some references to fields in tg.Entities that don't exist in the schema - originally added here: https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e - referenced here - https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3 - https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
package gen
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
var goKeywords = map[string]struct{}{
|
||||
// See https://golang.org/ref/spec#Keywords.
|
||||
"break": {},
|
||||
"default": {},
|
||||
"func": {},
|
||||
"interface": {},
|
||||
"select": {},
|
||||
"case": {},
|
||||
"defer": {},
|
||||
"go": {},
|
||||
"map": {},
|
||||
"struct": {},
|
||||
"chan": {},
|
||||
"else": {},
|
||||
"goto": {},
|
||||
"package": {},
|
||||
"switch": {},
|
||||
"const": {},
|
||||
"fallthrough": {},
|
||||
"if": {},
|
||||
"range": {},
|
||||
"type": {},
|
||||
"continue": {},
|
||||
"for": {},
|
||||
"import": {},
|
||||
"return": {},
|
||||
"var": {},
|
||||
|
||||
// Not really keyword, but unlikely to shadow.
|
||||
// See go/types/universe.go.
|
||||
"append": {},
|
||||
"cap": {},
|
||||
"close": {},
|
||||
"complex": {},
|
||||
"copy": {},
|
||||
"delete": {},
|
||||
"imag": {},
|
||||
"len": {},
|
||||
"make": {},
|
||||
"new": {},
|
||||
"panic": {},
|
||||
"print": {},
|
||||
"println": {},
|
||||
"real": {},
|
||||
"recover": {},
|
||||
}
|
||||
|
||||
// Funcs returns functions which used in templates.
|
||||
func Funcs() template.FuncMap {
|
||||
return template.FuncMap{
|
||||
"trim": strings.TrimSpace,
|
||||
"lower": strings.ToLower,
|
||||
"trimPrefix": strings.TrimPrefix,
|
||||
"trimSuffix": strings.TrimSuffix,
|
||||
"hasPrefix": strings.HasPrefix,
|
||||
"hasSuffix": strings.HasSuffix,
|
||||
"contains": strings.Contains,
|
||||
"hasField": hasField,
|
||||
"optionalField": optionalField,
|
||||
"mapCollectableFields": mapCollectableFields,
|
||||
"sortableFields": sortableFields,
|
||||
"generateSliceHelper": generateSliceHelper,
|
||||
"concat": func(args ...interface{}) []interface{} {
|
||||
return args
|
||||
},
|
||||
"add": func(x, y int) int {
|
||||
return x + y
|
||||
},
|
||||
"notEmpty": func(s string) bool {
|
||||
return strings.TrimSpace(s) != ""
|
||||
},
|
||||
"lowerGo": func(input string) string {
|
||||
lower := strings.ToLower(input)
|
||||
if _, ok := goKeywords[lower]; ok {
|
||||
return lower + "_"
|
||||
}
|
||||
return lower
|
||||
},
|
||||
"hasFlags": func(def structDef) bool {
|
||||
for _, field := range def.Fields {
|
||||
if field.Type == flagsType {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
},
|
||||
|
||||
// Argument constructors
|
||||
"newStructConfig": newStructConfig,
|
||||
"newInterfaceConfig": newInterfaceConfig,
|
||||
}
|
||||
}
|
||||
|
||||
//go:embed _template/*.tmpl
|
||||
var templates embed.FS
|
||||
|
||||
// Template parses and returns vendored code generation templates.
|
||||
func Template() *template.Template {
|
||||
tmpl := template.New("templates").Funcs(Funcs())
|
||||
tmpl = template.Must(tmpl.ParseFS(templates, "_template/*.tmpl"))
|
||||
return tmpl
|
||||
}
|
||||
Reference in New Issue
Block a user