You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
package nmapper
|
|
|
|
import "git.noahlan.cn/noahlan/ntool/nmapper/wrapper"
|
|
|
|
var defaultMapper *MapperObject
|
|
|
|
type Option func(m *MapperObject)
|
|
|
|
func init() {
|
|
defaultMapper = NewMapper()
|
|
}
|
|
|
|
// SetCustomTag 为默认的Mapper设置自定义tag
|
|
func SetCustomTag(tag string) {
|
|
defaultMapper.customTagName = tag
|
|
}
|
|
|
|
// SetTypeCheck 为默认的Mapper设置开启类型检查
|
|
func SetTypeCheck(enabled bool) {
|
|
defaultMapper.enabledTypeChecking = enabled
|
|
}
|
|
|
|
// SetTypeWrapper 为默认的Mapper设置类型转换器
|
|
func SetTypeWrapper(wrappers ...wrapper.TypeWrapper) {
|
|
defaultMapper.SetTypeWrapper(wrappers...)
|
|
}
|
|
|
|
// WithCustomTag 设置自定义 tag
|
|
func WithCustomTag(tag string) Option {
|
|
return func(m *MapperObject) {
|
|
m.customTagName = tag
|
|
}
|
|
}
|
|
|
|
// WithTypeCheck 开启类型安全
|
|
func WithTypeCheck() Option {
|
|
return func(m *MapperObject) {
|
|
m.enabledTypeChecking = true
|
|
}
|
|
}
|
|
|
|
// WithTypeWrapper 设置类型转换器
|
|
func WithTypeWrapper(wrappers ...wrapper.TypeWrapper) Option {
|
|
return func(m *MapperObject) {
|
|
m.SetTypeWrapper(wrappers...)
|
|
}
|
|
}
|
|
|
|
//func Mapper(dst any, src any) error {
|
|
// return defaultMapper.Mapper(dst, src)
|
|
//}
|
|
//
|
|
//func ParseMap(dst any, src map[string]any) error {
|
|
// return defaultMapper.Parse(dst, src)
|
|
//}
|
|
//
|
|
//func ParseStrMap(dst any, src map[string]string) error {
|
|
// defaultMapper.SetTypeWrapper(wrapper.StrWrapper()...)
|
|
// defer defaultMapper.SetTypeWrapper()
|
|
//
|
|
// return defaultMapper.Parse(dst, src)
|
|
//}
|