Documentation ¶
Index ¶
- func ToAssignable(assignTo *AssignTo) func(stmt []jen.Code, nextID *xtype.JenID, err *Error) ([]jen.Code, *Error)
- func ToString(err *Error) string
- type AssignTo
- type Basic
- func (b *Basic) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (*Basic) Build(_ Generator, _ *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*Basic) Matches(_ *MethodContext, source, target *xtype.Type) bool
- type BasicTargetPointerRule
- func (b *BasicTargetPointerRule) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (*BasicTargetPointerRule) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*BasicTargetPointerRule) Matches(_ *MethodContext, source, target *xtype.Type) bool
- type Builder
- type Enum
- func (s *Enum) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (*Enum) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*Enum) Matches(ctx *MethodContext, source, target *xtype.Type) bool
- type Error
- type ErrorElement
- type ErrorPath
- func (e ErrorPath) Field(name string) ErrorPath
- func (e ErrorPath) Index(code *jen.Statement) ErrorPath
- func (e ErrorPath) Key(code *jen.Statement) ErrorPath
- func (e ErrorPath) WrapErrors(errStmt *jen.Statement) *jen.Statement
- func (e ErrorPath) WrapErrorsUsing(pkg string, errStmt *jen.Statement) *jen.Statement
- type Generator
- type List
- func (*List) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (l *List) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*List) Matches(_ *MethodContext, source, target *xtype.Type) bool
- type Map
- func (*Map) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (m *Map) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*Map) Matches(_ *MethodContext, source, target *xtype.Type) bool
- type MethodContext
- func (ctx *MethodContext) DefinedEnumFields(target *xtype.Type) map[string]struct{}
- func (ctx *MethodContext) DefinedFields(target *xtype.Type) map[string]struct{}
- func (ctx *MethodContext) Field(target *xtype.Type, name string) *config.FieldMapping
- func (ctx *MethodContext) HasSeen(source *xtype.Type) bool
- func (ctx *MethodContext) MarkSeen(source *xtype.Type)
- func (ctx *MethodContext) SetErrorTargetVar(m *jen.Statement)
- type Path
- type Pointer
- func (*Pointer) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (p *Pointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*Pointer) Matches(_ *MethodContext, source, target *xtype.Type) bool
- type SkipCopy
- func (*SkipCopy) Assign(_ Generator, _ *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (*SkipCopy) Build(_ Generator, _ *MethodContext, sourceID *xtype.JenID, _, _ *xtype.Type, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*SkipCopy) Matches(ctx *MethodContext, source, target *xtype.Type) bool
- type SourcePointer
- func (*SourcePointer) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (s *SourcePointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*SourcePointer) Matches(ctx *MethodContext, source, target *xtype.Type) bool
- type Struct
- func (s *Struct) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (s *Struct) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*Struct) Matches(_ *MethodContext, source, target *xtype.Type) bool
- type TargetPointer
- func (tp *TargetPointer) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (*TargetPointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*TargetPointer) Matches(_ *MethodContext, source, target *xtype.Type) bool
- type UseUnderlyingTypeMethods
- func (u *UseUnderlyingTypeMethods) Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, ...) ([]jen.Code, *Error)
- func (*UseUnderlyingTypeMethods) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, ...) ([]jen.Code, *xtype.JenID, *Error)
- func (*UseUnderlyingTypeMethods) Matches(ctx *MethodContext, source, target *xtype.Type) bool
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ToAssignable ¶ added in v1.4.1
Types ¶
type AssignTo ¶ added in v1.4.1
func (*AssignTo) MustAssign ¶ added in v1.7.0
type Basic ¶
type Basic struct{}
Basic handles basic data types.
type BasicTargetPointerRule ¶
type BasicTargetPointerRule struct{}
BasicTargetPointerRule handles edge conditions if the target type is a pointer.
func (*BasicTargetPointerRule) Build ¶
func (*BasicTargetPointerRule) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, source, target *xtype.Type, errPath ErrorPath) ([]jen.Code, *xtype.JenID, *Error)
Build creates conversion source code for the given source and target type.
func (*BasicTargetPointerRule) Matches ¶
func (*BasicTargetPointerRule) Matches(_ *MethodContext, source, target *xtype.Type) bool
Matches returns true, if the builder can create handle the given types.
type Builder ¶
type Builder interface { // Matches returns true, if the builder can create handle the given types. Matches(ctx *MethodContext, source, target *xtype.Type) bool // Build creates conversion source code for the given source and target type. Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, source, target *xtype.Type, path ErrorPath) ([]jen.Code, *xtype.JenID, *Error) // Assign creates conversion source code for the given source and target type and assigns it. Assign(gen Generator, ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, source, target *xtype.Type, path ErrorPath) ([]jen.Code, *Error) }
Builder builds converter implementations, and can decide if it can handle the given type.
type Enum ¶ added in v1.4.0
type Enum struct{}
Basic handles basic data types.
type Error ¶
Error defines a conversion error.
func AssignByBuild ¶ added in v1.4.1
func BuildByAssign ¶ added in v1.4.1
type ErrorElement ¶ added in v1.4.0
type ErrorElement interface {
// contains filtered or unexported methods
}
type ErrorPath ¶ added in v1.4.0
type ErrorPath []ErrorElement
func (ErrorPath) WrapErrors ¶ added in v1.4.0
type Generator ¶
type Generator interface { Build( ctx *MethodContext, sourceID *xtype.JenID, source, target *xtype.Type, path ErrorPath) ([]jen.Code, *xtype.JenID, *Error) Assign(ctx *MethodContext, assignTo *AssignTo, sourceID *xtype.JenID, source, target *xtype.Type, path ErrorPath) ([]jen.Code, *Error) CallMethod( ctx *MethodContext, method *method.Definition, sourceID *xtype.JenID, source, target *xtype.Type, path ErrorPath) ([]jen.Code, *xtype.JenID, *Error) ReturnError(ctx *MethodContext, path ErrorPath, id *jen.Statement) (jen.Code, bool) }
Generator checks all existing builders if they can create a conversion implementations for the given source and target type If no one Builder#Matches then, an error is returned.
type List ¶
type List struct{}
List handles array / slice types.
type Map ¶
type Map struct{}
Map handles map types.
type MethodContext ¶
type MethodContext struct { *namer.Namer Conf *config.Method FieldsTarget string OutputPackagePath string UseConstructor bool Signature xtype.Signature TargetType *xtype.Type HasMethod func(*MethodContext, types.Type, types.Type) bool SeenNamed map[string]struct{} IndexID method.IndexID Context map[string]*xtype.JenID AvailableContext map[string]*xtype.Type TargetVar *jen.Statement }
MethodContext exposes information for the current method.
func (*MethodContext) DefinedEnumFields ¶ added in v1.4.0
func (ctx *MethodContext) DefinedEnumFields(target *xtype.Type) map[string]struct{}
func (*MethodContext) DefinedFields ¶ added in v1.3.0
func (ctx *MethodContext) DefinedFields(target *xtype.Type) map[string]struct{}
func (*MethodContext) Field ¶ added in v0.12.0
func (ctx *MethodContext) Field(target *xtype.Type, name string) *config.FieldMapping
func (*MethodContext) HasSeen ¶ added in v0.17.4
func (ctx *MethodContext) HasSeen(source *xtype.Type) bool
func (*MethodContext) MarkSeen ¶ added in v0.17.4
func (ctx *MethodContext) MarkSeen(source *xtype.Type)
func (*MethodContext) SetErrorTargetVar ¶ added in v0.15.0
func (ctx *MethodContext) SetErrorTargetVar(m *jen.Statement)
type Path ¶
type Path struct { Prefix string SourceID string TargetID string SourceType string TargetType string }
Path defines the path inside an error message.
type Pointer ¶
type Pointer struct{}
Pointer handles pointer types.
type SkipCopy ¶ added in v0.18.0
type SkipCopy struct{}
SkipCopy handles FlagSkipCopySameType.
type SourcePointer ¶ added in v0.17.0
type SourcePointer struct{}
SourcePointer handles type were only the source is a pointer.
func (*SourcePointer) Build ¶ added in v0.17.0
func (s *SourcePointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, source, target *xtype.Type, path ErrorPath) ([]jen.Code, *xtype.JenID, *Error)
Build creates conversion source code for the given source and target type.
func (*SourcePointer) Matches ¶ added in v0.17.0
func (*SourcePointer) Matches(ctx *MethodContext, source, target *xtype.Type) bool
Matches returns true, if the builder can create handle the given types.
type Struct ¶
type Struct struct{}
Struct handles struct types.
type TargetPointer ¶
type TargetPointer struct{}
TargetPointer handles type were only the target is a pointer.
func (*TargetPointer) Build ¶
func (*TargetPointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, source, target *xtype.Type, path ErrorPath) ([]jen.Code, *xtype.JenID, *Error)
Build creates conversion source code for the given source and target type.
func (*TargetPointer) Matches ¶
func (*TargetPointer) Matches(_ *MethodContext, source, target *xtype.Type) bool
Matches returns true, if the builder can create handle the given types.
type UseUnderlyingTypeMethods ¶ added in v1.1.0
type UseUnderlyingTypeMethods struct{}
UseUnderlyingTypeMethods handles UseUnderlyingTypeMethods.
func (*UseUnderlyingTypeMethods) Build ¶ added in v1.1.0
func (*UseUnderlyingTypeMethods) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, source, target *xtype.Type, errPath ErrorPath) ([]jen.Code, *xtype.JenID, *Error)
Build creates conversion source code for the given source and target type.
func (*UseUnderlyingTypeMethods) Matches ¶ added in v1.1.0
func (*UseUnderlyingTypeMethods) Matches(ctx *MethodContext, source, target *xtype.Type) bool
Matches returns true, if the builder can create handle the given types.