Documentation
¶
Index ¶
- func NoWrap(errStmt *jen.Statement) *jen.Statement
- func ToString(err *Error) string
- type Basic
- type BasicTargetPointerRule
- type Builder
- type ConversionFlag
- type ConversionFlags
- type Error
- type ErrorWrapper
- type ExtendMethod
- type FieldMapping
- type Generator
- type List
- type Map
- type MethodContext
- type Path
- type Pointer
- type SourcePointer
- type Struct
- type TargetPointer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
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) ([]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) ([]jen.Code, *xtype.JenID, *Error)
}
Builder builds converter implementations, and can decide if it can handle the given type.
type ConversionFlag ¶
type ConversionFlag int
const ( FlagWrapErrors ConversionFlag = iota + 1 FlagIgnoreMissing FlagMatchIgnoreCase FlagIgnoreUnexported FlagZeroValueOnPtrInconsistency )
type ConversionFlags ¶
type ConversionFlags map[ConversionFlag]bool
func (ConversionFlags) Add ¶
func (c ConversionFlags) Add(flags ConversionFlags) ConversionFlags
func (ConversionFlags) Has ¶
func (c ConversionFlags) Has(flag ConversionFlag) bool
func (ConversionFlags) Set ¶
func (c ConversionFlags) Set(flag ConversionFlag)
type ErrorWrapper ¶
ErrorWrapper generates code that wraps the errors returned from conversion methods, embedding extra details to ease on troubleshooting.
type ExtendMethod ¶
type FieldMapping ¶
type FieldMapping struct {
Source string
Ignore bool
Function *ExtendMethod
}
type Generator ¶
type Generator interface {
Build(
ctx *MethodContext,
sourceID *xtype.JenID,
source, target *xtype.Type,
errWrapper ErrorWrapper) ([]jen.Code, *xtype.JenID, *Error)
CallExtendMethod(
ctx *MethodContext,
method *ExtendMethod,
sourceID *xtype.JenID,
source, target *xtype.Type,
errWrapper ErrorWrapper) ([]jen.Code, *xtype.JenID, *Error)
}
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
Fields map[string]*FieldMapping
FieldsTarget string
Signature xtype.Signature
TargetType *xtype.Type
AutoMap []string
Flags ConversionFlags
SeenNamed map[string]struct{}
TargetVar *jen.Statement
}
MethodContext exposes information for the current method.
func (*MethodContext) Field ¶
func (ctx *MethodContext) Field(target *xtype.Type, name string) *FieldMapping
func (*MethodContext) MarkSeen ¶
func (ctx *MethodContext) MarkSeen(source *xtype.Type)
func (*MethodContext) SetErrorTargetVar ¶
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 SourcePointer ¶
type SourcePointer struct{}
SourcePointer handles type were only the source is a pointer.
func (*SourcePointer) Build ¶
func (*SourcePointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID, source, target *xtype.Type) ([]jen.Code, *xtype.JenID, *Error)
Build creates conversion source code for the given source and target type.
func (*SourcePointer) Matches ¶
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) ([]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.