fix inner type generate error (#377)

* fix point type bug

* optimized

* fix inner type error
This commit is contained in:
kingxt
2021-01-13 11:54:53 +08:00
committed by GitHub
parent cf3a1020b0
commit 9cd2015661
8 changed files with 92 additions and 54 deletions

View File

@@ -46,10 +46,11 @@ func genHandler(dir, webApi, caller string, api *spec.ApiSpec, unwrapApi bool) e
if len(api.Types) != 0 {
if len(imports) > 0 {
imports += "\n"
imports += util.NL
}
outputFile := apiutil.ComponentName(api)
imports += fmt.Sprintf(`import * as components from "%s"`, "./"+outputFile)
imports += fmt.Sprintf(`%sexport * from "%s"`, util.NL, "./"+outputFile)
}
apis, err := genApi(api, caller)
@@ -59,7 +60,6 @@ func genHandler(dir, webApi, caller string, api *spec.ApiSpec, unwrapApi bool) e
t := template.Must(template.New("handlerTemplate").Parse(handlerTemplate))
return t.Execute(fp, map[string]string{
"webApi": webApi,
"imports": imports,
"apis": strings.TrimSpace(apis),
})

View File

@@ -111,7 +111,7 @@ func primitiveType(tp string) (string, bool) {
func writeType(writer io.Writer, tp spec.Type) error {
fmt.Fprintf(writer, "export interface %s {\n", util.Title(tp.Name()))
if err := genMembers(writer, tp, false); err != nil {
if err := writeMembers(writer, tp, false); err != nil {
return err
}
@@ -131,7 +131,7 @@ func genParamsTypesIfNeed(writer io.Writer, tp spec.Type) error {
}
fmt.Fprintf(writer, "\n")
fmt.Fprintf(writer, "export interface %sParams {\n", util.Title(tp.Name()))
if err := genMembers(writer, tp, true); err != nil {
if err := writeMembers(writer, tp, true); err != nil {
return err
}
@@ -139,10 +139,14 @@ func genParamsTypesIfNeed(writer io.Writer, tp spec.Type) error {
return nil
}
func genMembers(writer io.Writer, tp spec.Type, isParam bool) error {
func writeMembers(writer io.Writer, tp spec.Type, isParam bool) error {
definedType, ok := tp.(spec.DefineStruct)
if !ok {
return errors.New("no members of type " + tp.Name())
pointType, ok := tp.(spec.PointerType)
if ok {
return writeMembers(writer, pointType.Type, isParam)
}
return errors.New(fmt.Sprintf("type %s not supported", tp.Name()))
}
members := definedType.GetBodyMembers()
@@ -151,7 +155,7 @@ func genMembers(writer io.Writer, tp spec.Type, isParam bool) error {
}
for _, member := range members {
if member.IsInline {
if err := genMembers(writer, member.Type, isParam); err != nil {
if err := writeMembers(writer, member.Type, isParam); err != nil {
return err
}
continue