@@ -91,30 +91,40 @@ func (i Mapper) mapStruct(path string, reflectValue reflect.Value) (map[string]i
91
91
value := reflectValue .Field (j )
92
92
element := Element {name : fieldName , Value : value }
93
93
94
- accepted , err := i .Filter (fieldPath , element )
95
- if err != nil {
96
- return nil , fmt .Errorf ("Filter failed: %w" , err )
94
+ if err := i .mapStructField (fieldPath , element , result ); err != nil {
95
+ return nil , err
97
96
}
97
+ }
98
98
99
- if accepted {
100
- renamed , err := i .Rename (fieldPath , element )
101
- if err != nil {
102
- return nil , fmt .Errorf ("Rename failed: %w" , err )
103
- }
99
+ return result , nil
100
+ }
104
101
105
- mappedValue , err := i .MapValue (fieldPath , element )
106
- if err != nil {
107
- return nil , fmt .Errorf ("MapValue failed: %w" , err )
108
- }
102
+ func (i Mapper ) mapStructField (fieldPath string , element Element , result map [string ]interface {}) error {
103
+ accepted , filterErr := i .Filter (fieldPath , element )
104
+ if filterErr != nil {
105
+ return fmt .Errorf ("Filter failed: %w" , filterErr )
106
+ }
109
107
110
- result [ renamed ], err = i . mapAny ( fieldPath , mappedValue )
111
- if err != nil {
112
- return nil , err
113
- }
108
+ if accepted {
109
+ renamed , renameErr := i . Rename ( fieldPath , element )
110
+ if renameErr != nil {
111
+ return fmt . Errorf ( "Rename failed: %w" , renameErr )
114
112
}
113
+
114
+ mappedValue , mapErr := i .MapValue (fieldPath , element )
115
+ if mapErr != nil {
116
+ return fmt .Errorf ("MapValue failed: %w" , mapErr )
117
+ }
118
+
119
+ finalValue , err := i .mapAny (fieldPath , mappedValue )
120
+ if err != nil {
121
+ return err
122
+ }
123
+
124
+ result [renamed ] = finalValue
115
125
}
116
126
117
- return result , nil
127
+ return nil
118
128
}
119
129
120
130
func (i Mapper ) mapSlice (path string , reflectValue reflect.Value ) (_ interface {}, err error ) {
0 commit comments