Documentation ¶
Index ¶
- func ExprString(expr ast.Expr) string
- func FixImport(src []byte, file string)
- func GetImportPath(dir string) string
- func GetMod() string
- func RewriteJSONTag(file string, omitempty bool, convert func(old string) string) (string, error)
- func Visit(files *[]string) filepath.WalkFunc
- type FieldMeta
- type InterfaceCollector
- type InterfaceMeta
- type MethodMeta
- type PackageMeta
- type StructCollector
- type StructMeta
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExprString ¶
ExprString return string representation from ast.Expr
func GetImportPath ¶
GetImportPath get import path of pkg from dir
func RewriteJSONTag ¶
RewriteJSONTag overwrites json tag by convert function and return formatted source code
Example ¶
file := pathutils.Abs("testdata/rewritejsontag.go") result, err := RewriteJSONTag(file, true, strcase.ToLowerCamel) if err != nil { panic(err) } fmt.Println(result)
Output: package main type base struct { Index string `json:"index,omitempty"` Type string `json:"type,omitempty"` } type struct1 struct { base Name string `json:"name,omitempty"` StructType int `json:"structType,omitempty" dd:"awesomtag"` Format string `dd:"anothertag" json:"format,omitempty"` Pos int `json:"pos,omitempty"` }
Types ¶
type FieldMeta ¶
type FieldMeta struct { Name string Type string Tag string Comments []string IsExport bool // used in OpenAPI 3.0 spec as property name DocName string }
FieldMeta wraps field info
type InterfaceCollector ¶
type InterfaceCollector struct { Interfaces []InterfaceMeta Package PackageMeta // contains filtered or unexported fields }
InterfaceCollector collect interfaces by parsing source code
func BuildInterfaceCollector ¶
func BuildInterfaceCollector(file string, exprString func(ast.Expr) string) InterfaceCollector
BuildInterfaceCollector initializes an InterfaceCollector and collects interfaces
func NewInterfaceCollector ¶
func NewInterfaceCollector(exprString func(ast.Expr) string) *InterfaceCollector
NewInterfaceCollector initializes an InterfaceCollector
type InterfaceMeta ¶
type InterfaceMeta struct { Name string Methods []MethodMeta Comments []string }
InterfaceMeta wraps interface info
type MethodMeta ¶
type MethodMeta struct { // Recv method receiver Recv string // Name method name Name string // Params when generate client code from openapi3 spec json file, Params holds all method input parameters. // when generate client code from service interface in svc.go file, if there is struct type param, this struct type param will put into request body, // then others will be put into url as query string. if there is no struct type param and the api is a get request, all will be put into url as query string. // if there is no struct type param and the api is Not a get request, all will be put into request body as application/x-www-form-urlencoded data. // specially, if there is one or more v3.FileModel or []v3.FileModel params, // all will be put into request body as multipart/form-data data. Params []FieldMeta // Results response Results []FieldMeta // PathVars not support when generate client code from service interface in svc.go file // when generate client code from openapi3 spec json file, PathVars is parameters in url as path variable. PathVars []FieldMeta // HeaderVars not support when generate client code from service interface in svc.go file // when generate client code from openapi3 spec json file, HeaderVars is parameters in header. HeaderVars []FieldMeta // BodyParams not support when generate client code from service interface in svc.go file // when generate client code from openapi3 spec json file, BodyParams is parameters in request body as query string. BodyParams *FieldMeta // BodyJSON not support when generate client code from service interface in svc.go file // when generate client code from openapi3 spec json file, BodyJSON is parameters in request body as json. BodyJSON *FieldMeta // Files not support when generate client code from service interface in svc.go file // when generate client code from openapi3 spec json file, Files is parameters in request body as multipart file. Files []FieldMeta // Comments of the method Comments []string // Path api path // not support when generate client code from service interface in svc.go file Path string // QueryParams not support when generate client code from service interface in svc.go file // when generate client code from openapi3 spec json file, QueryParams is parameters in url as query string. QueryParams *FieldMeta }
MethodMeta represents an api
func GetMethodMeta ¶
func GetMethodMeta(spec *ast.FuncDecl) MethodMeta
GetMethodMeta get method name then new MethodMeta struct from *ast.FuncDecl
func NewMethodMeta ¶
NewMethodMeta new MethodMeta struct from *ast.FuncDecl
func (MethodMeta) String ¶
func (mm MethodMeta) String() string
type StructCollector ¶
type StructCollector struct { Structs []StructMeta Methods map[string][]MethodMeta Package PackageMeta NonStructTypeMap map[string]ast.Expr // contains filtered or unexported fields }
StructCollector collect structs by parsing source code
func BuildStructCollector ¶
func BuildStructCollector(file string, exprString func(ast.Expr) string) StructCollector
BuildStructCollector initializes an StructCollector and collects structs
func NewStructCollector ¶
func NewStructCollector(exprString func(ast.Expr) string) *StructCollector
NewStructCollector initializes an StructCollector
func (*StructCollector) Collect ¶
func (sc *StructCollector) Collect(n ast.Node) ast.Visitor
Collect collects all structs from source code
func (*StructCollector) DocFlatEmbed ¶
func (sc *StructCollector) DocFlatEmbed() []StructMeta
DocFlatEmbed flatten embed struct fields
type StructMeta ¶
type StructMeta struct { Name string Fields []FieldMeta Comments []string Methods []MethodMeta IsExport bool }
StructMeta wraps struct info
func NewStructMeta ¶
func NewStructMeta(structType *ast.StructType, exprString func(ast.Expr) string) StructMeta
NewStructMeta new StructMeta from *ast.StructType