Documentation ¶
Overview ¶
Package gocodegen contains shared code used for generating Go code by both the compilers code generator, and the CLI's client generator.
Index ¶
- Constants
- func ConvertBuiltInSchemaToJenType(builtin schema.Builtin) *Statement
- func ConvertSchemaToJenType(typ *schema.Type, md *meta.Data) *Statement
- func ConvertSchemaTypeToString(typ *schema.Type, md *meta.Data) string
- type MarshallingCodeGenerator
- type MarshallingCodeWrapper
- func (w *MarshallingCodeWrapper) Add(c ...Code)
- func (w *MarshallingCodeWrapper) Body(getBody Code) Code
- func (w *MarshallingCodeWrapper) EndBlock(endBlock ...Code)
- func (w *MarshallingCodeWrapper) Finalize(ifErrorBlock ...Code) []Code
- func (w *MarshallingCodeWrapper) FromJSON(targetType *schema.Type, fieldName string, iterName string, dst Code) (code Code, err error)
- func (w *MarshallingCodeWrapper) FromString(targetType *schema.Type, fieldName string, getAsString Code, ...) (code Code, err error)
- func (w *MarshallingCodeWrapper) FromStringToBuiltin(builtin schema.Builtin, fieldName string, getAsString Code, required bool) (code Code, err error)
- func (w *MarshallingCodeWrapper) LastError() Code
- func (w *MarshallingCodeWrapper) ToString(sourceType *schema.Type, sourceValue Code) (code Code, err error)
- func (w *MarshallingCodeWrapper) ToStringSlice(sourceType *schema.Type, sourceValue Code) (code Code, err error)
- func (w *MarshallingCodeWrapper) WithFunc(body func(*Group), errBlock func(*Group)) []Code
Constants ¶
const UnknownPkgPath = "__unknown_path__"
Variables ¶
This section is empty.
Functions ¶
func ConvertBuiltInSchemaToJenType ¶ added in v1.8.0
func ConvertSchemaToJenType ¶ added in v1.8.0
ConvertSchemaToJenType converts a schema.Type to a Jen statement which represents the type
func ConvertSchemaTypeToString ¶ added in v1.8.0
ConvertSchemaTypeToString converts a schema.Type to a string that can be used in a log output which can be increbily useful for debugging if the parser as generated the expected Schema protobuf from the original Go code
Types ¶
type MarshallingCodeGenerator ¶
type MarshallingCodeGenerator struct {
// contains filtered or unexported fields
}
MarshallingCodeGenerator is used to generate a structure has methods for decoding various types, collecting the errors. It will only generate methods required for the given types.
func NewMarshallingCodeGenerator ¶
func NewMarshallingCodeGenerator(pkgPath, structName string, forClientGen bool) *MarshallingCodeGenerator
func (*MarshallingCodeGenerator) GenerateAll ¶ added in v1.4.0
func (g *MarshallingCodeGenerator) GenerateAll()
GenerateAll causes the generator to generate all possible methods.
func (*MarshallingCodeGenerator) NewPossibleInstance ¶
func (g *MarshallingCodeGenerator) NewPossibleInstance(instanceName string) *MarshallingCodeWrapper
NewPossibleInstance Creates a statement to initialise a new encoding instance.
Use the returned wrapper to convert FromStrings to the target types, adding any code you are generating to the wrapper using Add. Once you've finished generating all the code which may need type conversion with that _instance_ of the deserializer, call Finalize to generate the code full code including error handling.
Once you've finished writing the whole app with all the code which uses this generator call WriteToFile to write the supporting struct and methods to the given file
func (*MarshallingCodeGenerator) WriteToFile ¶
func (g *MarshallingCodeGenerator) WriteToFile(f *File)
WriteToFile writes the full encoder type into the given file.
type MarshallingCodeWrapper ¶
type MarshallingCodeWrapper struct {
// contains filtered or unexported fields
}
MarshallingCodeWrapper is returned by NewPossibleInstance and tracks usage within a block
func (*MarshallingCodeWrapper) Add ¶
func (w *MarshallingCodeWrapper) Add(c ...Code)
Add adds code into the wrapped block
func (*MarshallingCodeWrapper) Body ¶
func (w *MarshallingCodeWrapper) Body(getBody Code) Code
func (*MarshallingCodeWrapper) EndBlock ¶ added in v1.3.0
func (w *MarshallingCodeWrapper) EndBlock(endBlock ...Code)
EndBlock adds custom logic after the error block
func (*MarshallingCodeWrapper) Finalize ¶
func (w *MarshallingCodeWrapper) Finalize(ifErrorBlock ...Code) []Code
Finalize returns the final code block including all wrapped code
func (*MarshallingCodeWrapper) FromString ¶
func (w *MarshallingCodeWrapper) FromString(targetType *schema.Type, fieldName string, getAsString Code, getAsStringSlice Code, required bool) (code Code, err error)
FromString will return a call to a decoder method
func (*MarshallingCodeWrapper) FromStringToBuiltin ¶
func (w *MarshallingCodeWrapper) FromStringToBuiltin(builtin schema.Builtin, fieldName string, getAsString Code, required bool) (code Code, err error)
FromStringToBuiltin will return either the original string or a call to the encoder
func (*MarshallingCodeWrapper) LastError ¶
func (w *MarshallingCodeWrapper) LastError() Code
func (*MarshallingCodeWrapper) ToString ¶
func (w *MarshallingCodeWrapper) ToString(sourceType *schema.Type, sourceValue Code) (code Code, err error)
ToString will return either the original string or a call to the encoder
func (*MarshallingCodeWrapper) ToStringSlice ¶
func (w *MarshallingCodeWrapper) ToStringSlice(sourceType *schema.Type, sourceValue Code) (code Code, err error)
ToStringSlice will return either the original string or a call to the encoder
func (*MarshallingCodeWrapper) WithFunc ¶ added in v1.4.0
func (w *MarshallingCodeWrapper) WithFunc(body func(*Group), errBlock func(*Group)) []Code