Skip to content

Commit 4c67cc9

Browse files
committed
fix output
1 parent 79ae835 commit 4c67cc9

16 files changed

Lines changed: 115 additions & 64 deletions

File tree

cmd/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func init() {
2020
//init
2121
initCmd.Flags().StringVarP(&initArgs.Version, "version", "v", initArgs.Version, "openapi version")
2222
initCmd.Flags().StringVarP(&initArgs.Endpoint, "endpoint", "e", initArgs.Endpoint, "example:https://{server}:{port}/v3/api-docs")
23-
initCmd.Flags().StringVarP(&initArgs.Lang, "lang", "l", initArgs.Lang, strings.Join(tmpl.Names(), ","))
23+
initCmd.Flags().StringVarP(&initArgs.Lang, "lang", "l", initArgs.Lang, strings.Join(tmpl.LangNames(), ","))
2424
}
2525

2626
// create env file

cmd/start.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ func init() {
1313
//init
1414
startCmd.Flags().StringVarP(&initArgs.Version, "version", "v", initArgs.Version, "openapi version")
1515
startCmd.Flags().StringVarP(&initArgs.Endpoint, "endpoint", "e", initArgs.Endpoint, "example:https://{server}:{port}/v3/api-docs")
16-
startCmd.Flags().StringVarP(&initArgs.Lang, "lang", "l", initArgs.Lang, strings.Join(tmpl.Names(), ","))
16+
startCmd.Flags().StringVarP(&initArgs.Lang, "lang", "l", initArgs.Lang, strings.Join(tmpl.LangNames(), ","))
1717
}
1818

1919
var startCmd = &cobra.Command{

internal/cmd.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package internal
22

33
import (
44
"cmp"
5+
"codegen/lang"
56
"codegen/tmpl"
67
v2 "codegen/v2"
78
v3 "codegen/v3"
@@ -45,13 +46,13 @@ type Generics struct {
4546

4647
type Executor struct {
4748
env *Env
48-
convert tmpl.TypeConvert
49+
convert lang.TypeConvert
4950
}
5051

5152
func New(env *Env, args []string) (*Executor, error) {
5253
return &Executor{
5354
env: env,
54-
convert: tmpl.NewConvert(env.Lang, env.Alias.Types),
55+
convert: tmpl.NewLangConvert(env.Lang, env.Alias.Types),
5556
}, nil
5657
}
5758

@@ -267,7 +268,7 @@ func (e *Executor) buildApis(outRefs []*tmpl.Ref, outApis []*tmpl.Api) ([]*tmpl.
267268
})
268269

269270
if len(parameters) > 0 {
270-
return tmpl.Format(LANG, path.OriginalPath, e.env.Alias.Parameters)
271+
return lang.Format(LANG, path.OriginalPath, e.env.Alias.Parameters)
271272
}
272273
return fmt.Sprintf(`"%s"`, path.Path)
273274
}

internal/generics.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package internal
22

33
import (
44
"cmp"
5+
"codegen/lang"
56
"codegen/tmpl"
67
"fmt"
78
"github.com/samber/lo"
@@ -16,7 +17,7 @@ type nestingGeneric struct {
1617
Subs []*nestingGeneric
1718
}
1819

19-
func (n *nestingGeneric) discriminator(convert tmpl.TypeConvert) string {
20+
func (n *nestingGeneric) discriminator(convert lang.TypeConvert) string {
2021
lines := make([]string, 0)
2122
for _, sub := range n.Subs {
2223
var expression = sub.Expression
@@ -32,7 +33,7 @@ func (n *nestingGeneric) discriminator(convert tmpl.TypeConvert) string {
3233
return n.Kind.Parse(n.Expression, n.Format, convert)
3334
}
3435

35-
return convert.Generic(n.Expression, tmpl.ActualGenericMode, lines...)
36+
return convert.Generic(n.Expression, lang.ActualGenericMode, lines...)
3637
}
3738

3839
func (n *nestingGeneric) unfold() {
@@ -118,7 +119,7 @@ func (n *nestingGenericManage) recursion(current *nestingGeneric, generic, examp
118119
var placeholders = []string{"T", "A", "B", "C", "D", "E", "F", "G", "H"}
119120

120121
// 匹配泛型
121-
func resolvingGenerics(convert tmpl.TypeConvert, expressions map[string][]string, refs []*tmpl.Ref) []*tmpl.Ref {
122+
func resolvingGenerics(convert lang.TypeConvert, expressions map[string][]string, refs []*tmpl.Ref) []*tmpl.Ref {
122123

123124
var defines = make([]*tmpl.Ref, 0)
124125
for wrapper, discriminators := range expressions {
@@ -174,7 +175,7 @@ func resolvingGenerics(convert tmpl.TypeConvert, expressions map[string][]string
174175
placeholders := placeholders[:idx]
175176
tp := &tmpl.NamedType{
176177
Kind: tmpl.ImmutableType, //类型设置不可变
177-
Expression: convert.Generic(wrapper, tmpl.TypeGenericMode, placeholders...),
178+
Expression: convert.Generic(wrapper, lang.TypeGenericMode, placeholders...),
178179
}
179180

180181
ref := &tmpl.Ref{

lang/doc.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package lang
2+
3+
import (
4+
"cmp"
5+
"fmt"
6+
"regexp"
7+
"strings"
8+
)
9+
10+
type GenericMode int
11+
12+
const (
13+
// ActualGenericMode 实参类型
14+
ActualGenericMode GenericMode = iota + 1
15+
16+
// TypeGenericMode 行参类型
17+
TypeGenericMode
18+
)
19+
20+
type TypeConvert interface {
21+
22+
// Reference 引用类型
23+
Reference(name string) string
24+
// Foundation 基础类型
25+
Foundation(name string, format string) string
26+
// Array 数组
27+
Array(sub string) string
28+
// Map 字典
29+
Map(sub string) string
30+
// Generic 泛型
31+
Generic(parentType string, mode GenericMode, subTypes ...string) string
32+
}
33+
34+
var reg = regexp.MustCompile(`\{([^/]+?)\}`)
35+
36+
func Format(lang string, path string, alias map[string]string) string {
37+
38+
var segments []string
39+
text := reg.ReplaceAllStringFunc(path, func(seg string) string {
40+
41+
segment := reg.FindStringSubmatch(seg)[1]
42+
segment = cmp.Or(alias[segment], segment)
43+
44+
segments = append(segments, segment)
45+
46+
switch lang {
47+
case "ts":
48+
return fmt.Sprintf("${%s}", segment)
49+
case "go":
50+
return "%v"
51+
case "swift":
52+
return "%@"
53+
default:
54+
return "%s"
55+
}
56+
})
57+
58+
switch lang {
59+
case "ts":
60+
return fmt.Sprintf("`%s`", text)
61+
case "go":
62+
return fmt.Sprintf(`fmt.Sprintf("%s",%s)`, text, strings.Join(segments, ","))
63+
case "java":
64+
return fmt.Sprintf(`String.format("%s",%s)`, text, strings.Join(segments, ","))
65+
case "swift":
66+
return fmt.Sprintf(`String(format: "%s", %s)`, text, strings.Join(segments, ","))
67+
case "kotlin", "python":
68+
return fmt.Sprintf(`"%s".format(%s)`, text, strings.Join(segments, ","))
69+
}
70+
return text
71+
}
72+
73+
type TextConvert interface {
74+
Placeholder(name string) string
75+
Format(name string, values ...string) string
76+
}

tmpl/cs/cs.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package cs
22

33
import (
4-
"codegen/tmpl"
4+
"codegen/lang"
55
_ "embed"
66
"fmt"
77
"strings"
@@ -55,6 +55,6 @@ func (j *Convert) Array(sub string) string {
5555
return fmt.Sprintf("List<%s>", sub)
5656
}
5757

58-
func (j *Convert) Generic(parentType string, mode tmpl.GenericMode, subTypes ...string) string {
58+
func (j *Convert) Generic(parentType string, mode lang.GenericMode, subTypes ...string) string {
5959
return fmt.Sprintf("%s<%s>", parentType, strings.Join(subTypes, ","))
6060
}

tmpl/dart/dart.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dart
22

33
import (
4-
"codegen/tmpl"
4+
"codegen/lang"
55
_ "embed"
66
"fmt"
77
"strings"
@@ -55,6 +55,6 @@ func (j *Convert) Array(sub string) string {
5555
return fmt.Sprintf("List<%s>", sub)
5656
}
5757

58-
func (j *Convert) Generic(parentType string, mode tmpl.GenericMode, subTypes ...string) string {
58+
func (j *Convert) Generic(parentType string, mode lang.GenericMode, subTypes ...string) string {
5959
return fmt.Sprintf("%s<%s>", parentType, strings.Join(subTypes, ","))
6060
}

tmpl/doc.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tmpl
22

33
import (
4+
"codegen/lang"
45
"github.com/samber/lo"
56
)
67

@@ -65,7 +66,7 @@ type NamedType struct {
6566

6667
type Parameters = []*Parameter
6768

68-
func (nt *NamedType) GenerateExpression(format string, convert TypeConvert) {
69+
func (nt *NamedType) GenerateExpression(format string, convert lang.TypeConvert) {
6970
expression := nt.Expression
7071

7172
if nt.Kind&ImmutableType != 0 {
@@ -74,7 +75,7 @@ func (nt *NamedType) GenerateExpression(format string, convert TypeConvert) {
7475
nt.Expression = nt.Kind.Parse(expression, format, convert)
7576
}
7677

77-
func (nk NamedTypeKind) Parse(expression string, format string, convert TypeConvert) string {
78+
func (nk NamedTypeKind) Parse(expression string, format string, convert lang.TypeConvert) string {
7879

7980
if nk&FoundationType != 0 {
8081
expression = convert.Foundation(expression, format)

tmpl/func.go

Lines changed: 0 additions & 5 deletions
This file was deleted.

tmpl/golang/golang.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package golang
22

33
import (
4-
"codegen/tmpl"
4+
"codegen/lang"
55
_ "embed"
66
"fmt"
77
"github.com/samber/lo"
@@ -54,8 +54,8 @@ func (g *Convert) Array(sub string) string {
5454
return fmt.Sprintf("[]%s", sub)
5555
}
5656

57-
func (g *Convert) Generic(parentType string, mode tmpl.GenericMode, subTypes ...string) string {
58-
if mode == tmpl.TypeGenericMode {
57+
func (g *Convert) Generic(parentType string, mode lang.GenericMode, subTypes ...string) string {
58+
if mode == lang.TypeGenericMode {
5959
subTypes = lo.Map(subTypes, func(item string, index int) string {
6060
return fmt.Sprintf("%s any", item)
6161
})

0 commit comments

Comments
 (0)