7a04f298d2
- 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
64 lines
1.0 KiB
Go
64 lines
1.0 KiB
Go
// Package gen implements code generation from TL schema.
|
|
package gen
|
|
|
|
import (
|
|
"net/url"
|
|
"path"
|
|
"strings"
|
|
"unicode"
|
|
)
|
|
|
|
func cloneURL(u *url.URL) *url.URL {
|
|
if u == nil {
|
|
return nil
|
|
}
|
|
u2 := new(url.URL)
|
|
*u2 = *u
|
|
if u.User != nil {
|
|
u2.User = new(url.Userinfo)
|
|
*u2.User = *u.User
|
|
}
|
|
return u2
|
|
}
|
|
|
|
func (g *Generator) docURL(parts ...string) string {
|
|
if g.docBase == nil {
|
|
return ""
|
|
}
|
|
|
|
u := cloneURL(g.docBase)
|
|
u.Path = path.Join(append([]string{u.Path}, parts...)...)
|
|
|
|
return u.String()
|
|
}
|
|
|
|
func splitLine(s string, limit int) (r []string) {
|
|
for {
|
|
if len(s) < limit {
|
|
r = append(r, s)
|
|
return
|
|
}
|
|
|
|
idx := strings.LastIndexFunc(s[:limit], func(r rune) bool {
|
|
return unicode.IsSpace(r) || r == '.' || r == ','
|
|
})
|
|
if idx < 0 || len(s)-1 == idx {
|
|
r = append(r, s)
|
|
return
|
|
}
|
|
|
|
r = append(r, s[:idx])
|
|
s = s[idx+1:]
|
|
}
|
|
}
|
|
|
|
func splitLines(s []string, limit int) []string {
|
|
r := make([]string, 0, len(s))
|
|
|
|
for _, line := range s {
|
|
r = append(r, splitLine(line, limit)...)
|
|
}
|
|
|
|
return r
|
|
}
|