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,94 @@
|
||||
{{- /*gotype: go.mau.fi/mautrix-telegram/pkg/gotd/gen.interfaceDef*/ -}}
|
||||
{{ define "interface_slice" }}{{ $f := . }}
|
||||
{{ template "slice" $f }}
|
||||
|
||||
{{ range $field := sortableFields ($f.SharedFields.Common) }}
|
||||
{{ template "slice_sort_by" concat ($f) ($field) }}
|
||||
{{ end }}
|
||||
|
||||
{{ range $s := $f.Constructors }}{{ if $s.Fields }}
|
||||
{{ range $field := mapCollectableFields ($f.SharedFields.Common) }}
|
||||
{{ template "slice_collect_to_map" concat ($f) ($field) ($s.Name) }}
|
||||
{{ end }}
|
||||
|
||||
// As{{ $s.Name }} returns copy with only {{ $s.Name }} constructors.
|
||||
func (s {{ template "slice_name" $f }}) As{{ $s.Name }}() (to {{ template "slice_name" $s }}) {
|
||||
for _, elem := range s {
|
||||
value, ok := elem.(*{{ $s.Name }})
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
to = append(to, *value)
|
||||
}
|
||||
|
||||
return to
|
||||
}
|
||||
{{- end }}{{- end }}
|
||||
|
||||
{{ range $mapping := $f.Mappings }}{{- if (not $mapping.Constructor) }}
|
||||
|
||||
{{- range $field := mapCollectableFields (index ($f.SharedFields) ($mapping.MapperName)) }}
|
||||
{{- /*gotype: go.mau.fi/mautrix-telegram/pkg/gotd/gen.fieldDef*/ -}}
|
||||
// Fill{{ $mapping.MapperName }}Map fills only {{ $mapping.MapperName }} constructors to given map.
|
||||
func (s {{ template "slice_name" $f }}) Fill{{ $mapping.MapperName }}{{ template "map_collector_name" $field }}Map(to map[{{ $field.Type }}]{{ template "print_mapper_type" $mapping }}) {
|
||||
for _, elem := range s {
|
||||
value, ok := elem.As{{ $mapping.MapperName }}()
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
to[value.Get{{ $field.Name }}()] = value
|
||||
}
|
||||
}
|
||||
|
||||
// {{ $mapping.MapperName }}ToMap collects only {{ $mapping.MapperName }} constructors to map.
|
||||
func (s {{ template "slice_name" $f }}) {{ $mapping.MapperName }}To{{ template "map_collector_name" $field }}Map() map[{{ $field.Type }}]{{ template "print_mapper_type" $mapping }} {
|
||||
r := make(map[{{ $field.Type }}]{{ template "print_mapper_type" $mapping }}, len(s))
|
||||
s.Fill{{ $mapping.MapperName }}{{ template "map_collector_name" $field }}Map(r)
|
||||
return r
|
||||
}
|
||||
{{ end }}
|
||||
|
||||
// AppendOnly{{ $mapping.MapperName }} appends only {{ $mapping.MapperName }} constructors to
|
||||
// given slice.
|
||||
func (s {{ template "slice_name" $f }}) AppendOnly{{ $mapping.MapperName }}(to []{{ template "print_mapper_type" $mapping }}) []{{ template "print_mapper_type" $mapping }} {
|
||||
for _, elem := range s {
|
||||
value, ok := elem.As{{ $mapping.MapperName }}()
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
to = append(to, value)
|
||||
}
|
||||
|
||||
return to
|
||||
}
|
||||
|
||||
// As{{ $mapping.MapperName }} returns copy with only {{ $mapping.MapperName }} constructors.
|
||||
func (s {{ template "slice_name" $f }}) As{{ $mapping.MapperName }}() (to []{{ template "print_mapper_type" $mapping }}) {
|
||||
return s.AppendOnly{{ $mapping.MapperName }}(to)
|
||||
}
|
||||
|
||||
{{- range $method := concat ("First") ("Last") }}
|
||||
// {{ $method }}As{{ $mapping.MapperName }} returns {{ lower $method }} element of slice (if exists).
|
||||
func (s {{ template "slice_name" $f }}) {{ $method }}As{{ $mapping.MapperName }}() (v {{ template "print_mapper_type" $mapping }}, ok bool) {
|
||||
value, ok := s.{{ $method }}()
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
return value.As{{ $mapping.MapperName }}()
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- range $method := concat ("PopFirst") ("Pop") }}
|
||||
// {{ $method }}As{{ $mapping.MapperName }} returns element of slice (if exists).
|
||||
func (s *{{ template "slice_name" $f }}) {{ $method }}As{{ $mapping.MapperName }}() (v {{ template "print_mapper_type" $mapping }}, ok bool) {
|
||||
value, ok := s.{{ $method }}()
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
return value.As{{ $mapping.MapperName }}()
|
||||
}
|
||||
{{ end }}
|
||||
|
||||
{{- end }}{{- end }}
|
||||
|
||||
{{- end }}
|
||||
Reference in New Issue
Block a user