Skip to content

Commit 583bd17

Browse files
committed
#### Version 0.7.12
* Refactor: Solve the problem of repeated function implementation, rewrite "mapperObject.Getfieldname" direct call "mapperObject.getFieldName". * Refactor: Rewrite mapperObject.cleanRegisterValue, it will be reset registerMap & fieldNameMap. * 2022-07-06 14:00 in ShangHai
1 parent 3e5bb54 commit 583bd17

5 files changed

Lines changed: 32 additions & 24 deletions

File tree

constant.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package mapper
22

33
const (
4-
packageVersion = "0.7.11"
4+
packageVersion = "0.7.12"
55
mapperTagKey = "mapper"
66
jsonTagKey = "json"
77
IgnoreTagValue = "-"

example/main.go

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
type (
1010
User struct {
1111
Name string
12-
Age int
12+
Age int `mapper:"_Age"`
1313
Id string `mapper:"_id"`
1414
AA string `json:"Score,omitempty"`
1515
Data []byte
@@ -33,7 +33,7 @@ type (
3333

3434
Leader struct {
3535
Name string
36-
LeaderAge int `form:"Age"`
36+
LeaderAge int `mapper:"_Age" form:"Age"`
3737
}
3838

3939
JsonUser struct {
@@ -77,15 +77,26 @@ func main() {
7777
Time: mapper.JSONTime(time.Now()),
7878
}
7979

80-
user2 := &User{Name: "User2", Age: 35}
81-
leader1 := &Leader{}
82-
leader2 := &Leader{}
83-
mapper.Mapper(user2, leader1)
84-
fmt.Println("leader first:", leader1)
80+
user = &User{Name: "User2", Age: 35}
81+
leader := &Leader{}
82+
mapper.Mapper(user, leader)
83+
fmt.Println("leader first:", leader)
8584
mapper.SetCustomTagName("form")
8685
mapper.SetEnabledCustomTag(true)
87-
mapper.Mapper(user2, leader2)
88-
fmt.Println("leader second:", leader2)
86+
leader = &Leader{}
87+
mapper.Mapper(user, leader)
88+
fmt.Println("leader second:", leader)
89+
90+
mapper.SetEnabledMapperTag(false)
91+
leader = &Leader{}
92+
mapper.Mapper(user, leader)
93+
fmt.Println("leader third:", leader)
94+
95+
//mapper.SetEnabledMapperTag(false)
96+
mapper.SetEnabledCustomTag(false)
97+
leader = &Leader{}
98+
mapper.Mapper(user, leader)
99+
fmt.Println("leader fourth 2:", leader)
89100

90101
fmt.Println(jsonUser)
91102
}

mapper_object.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -216,15 +216,7 @@ func (dm *mapperObject) GetTypeName(obj interface{}) string {
216216
// GetFieldName get fieldName with ElemValue and index
217217
// if config tag string, return tag value
218218
func (dm *mapperObject) GetFieldName(objElem reflect.Value, index int) string {
219-
fieldName := ""
220-
field := objElem.Type().Field(index)
221-
tag := dm.getStructTag(field)
222-
if tag != "" {
223-
fieldName = tag
224-
} else {
225-
fieldName = field.Name
226-
}
227-
return fieldName
219+
return dm.getFieldName(objElem, index)
228220
}
229221

230222
func (dm *mapperObject) GetDefaultTimeWrapper() *TimeWrapper {

mapper_object_internal.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"reflect"
77
"strings"
8+
"sync"
89
"time"
910
)
1011

@@ -37,12 +38,10 @@ func (dm *mapperObject) registerValue(objValue reflect.Value) error {
3738
return nil
3839
}
3940

40-
// cleanRegisterValue clean all register Value
41+
// cleanRegisterValue clean all register Value & field name map
4142
func (dm *mapperObject) cleanRegisterValue() {
42-
dm.registerMap.Range(func(key, value interface{}) bool {
43-
dm.registerMap.Delete(key)
44-
return true
45-
})
43+
dm.registerMap = *new(sync.Map)
44+
dm.fieldNameMap = *new(sync.Map)
4645
}
4746

4847
// GetFieldName get fieldName with ElemValue and index

version.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
## devfeel/mapper
22

3+
#### Version 0.7.12
4+
* Refactor: Solve the problem of repeated function implementation, rewrite "mapperObject.Getfieldname" direct call "mapperObject.getFieldName".
5+
* Refactor: Rewrite mapperObject.cleanRegisterValue, it will be reset registerMap & fieldNameMap.
6+
* 2022-07-06 14:00 in ShangHai
7+
8+
39
#### Version 0.7.11
410
* BugFix: Fix the problem that getFieldName cannot take effect when the tag behavior is set dynamically.
511
* Feature: Add SetEnabledCustomTag\SetCustomTagName to support custom tags, except mapper tag and json tag, for issue #34

0 commit comments

Comments
 (0)