@@ -71,43 +71,25 @@ func (s *StructToTS) AddWithName(v interface{}, name string) *Struct {
71
71
return s .addType (t , name , "" )
72
72
}
73
73
74
- func (s * StructToTS ) addType (t reflect.Type , name , prefix string ) (out * Struct ) {
75
- t = indirect (t )
76
-
77
- if out = s .seen [t ]; out != nil {
78
- return out
79
- }
80
-
81
- if name == "" {
82
- name = t .Name ()
83
- if ! s .opts .NoCapitalize {
84
- name = capitalize (name )
85
- }
86
- }
87
-
88
- out = & Struct {
89
- Name : prefix + name ,
90
- Fields : make ([]* Field , 0 , t .NumField ()),
91
-
92
- t : t ,
93
- }
94
-
95
- s .seen [t ] = out
96
-
74
+ func (s * StructToTS ) addTypeFields (out * Struct , t reflect.Type ) {
97
75
for i := 0 ; i < t .NumField (); i ++ {
98
- var (
99
- sf = t .Field (i )
100
- sft = sf .Type
101
- tf Field
102
- k = sft .Kind ()
103
- )
76
+ sf := t .Field (i )
77
+ sft := sf .Type
78
+ k := sft .Kind ()
79
+ var tf Field
104
80
105
81
if k == reflect .Ptr {
106
82
tf .CanBeNull = true
107
83
sft = indirect (sft )
108
84
k = sft .Kind ()
109
85
}
110
86
87
+ if sf .Anonymous && k == reflect .Struct {
88
+ log .Println ("trying anonymous field:" , sft , k )
89
+ s .addTypeFields (out , sft )
90
+ continue
91
+ }
92
+
111
93
if tf .setProps (sf , sft ) {
112
94
continue
113
95
}
@@ -147,7 +129,32 @@ func (s *StructToTS) addType(t reflect.Type, name, prefix string) (out *Struct)
147
129
148
130
out .Fields = append (out .Fields , & tf )
149
131
}
132
+ }
133
+
134
+ func (s * StructToTS ) addType (t reflect.Type , name , prefix string ) (out * Struct ) {
135
+ t = indirect (t )
136
+
137
+ if out = s .seen [t ]; out != nil {
138
+ return out
139
+ }
140
+
141
+ if name == "" {
142
+ name = t .Name ()
143
+ if ! s .opts .NoCapitalize {
144
+ name = capitalize (name )
145
+ }
146
+ }
147
+
148
+ out = & Struct {
149
+ Name : prefix + name ,
150
+ Fields : make ([]* Field , 0 , t .NumField ()),
151
+
152
+ t : t ,
153
+ }
150
154
155
+ log .Println ("building struct:" , out .Name )
156
+ s .addTypeFields (out , t )
157
+ s .seen [t ] = out
151
158
s .structs = append (s .structs , out )
152
159
return
153
160
}
0 commit comments