Skip to content

Commit

Permalink
Merge pull request #265 from rl404/develop
Browse files Browse the repository at this point in the history
feat: tag modifier handle param
  • Loading branch information
rl404 committed Jul 19, 2023
2 parents 74b32f4 + d9b00d2 commit bfeaf2b
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
7 changes: 6 additions & 1 deletion example/validation/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type user struct {
Name string `validate:"required" mod:"trim"`
Age int `validate:"gt=10"`
Magic string `mod:"magic"`
Skill string `mod:"skill=expert"`
Country string `validate:"contain=konoha" mod:"lcase"`
}

Expand All @@ -20,9 +21,12 @@ func main() {
v := validation.New(true)

// Register custom modifier.
v.RegisterModifier("magic", func(in string) string {
v.RegisterModifier("magic", func(in string, _ ...string) string {
return in + " magic"
})
v.RegisterModifier("skill", func(in string, param ...string) string {
return fmt.Sprintf("%s (%s)", in, param[0])
})

// Register custom validator.
v.RegisterValidator("contain", func(value interface{}, param ...string) bool {
Expand All @@ -42,6 +46,7 @@ func main() {
Name: " Naruto ",
Age: 15,
Magic: "ninja",
Skill: "jump",
Country: "Konohagakure",
}

Expand Down
4 changes: 2 additions & 2 deletions validation/playground/playground.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func New(autoMod bool) *Validator {
}

// RegisterModifier to register custom modifier.
func (v *Validator) RegisterModifier(name string, fn func(string) string) error {
func (v *Validator) RegisterModifier(name string, fn func(string, ...string) string) error {
if name == "" {
return ErrRequiredName
}
Expand All @@ -55,7 +55,7 @@ func (v *Validator) RegisterModifier(name string, fn func(string) string) error
v.mod.Register(name, func(ctx context.Context, fl mold.FieldLevel) error {
switch fl.Field().Kind() {
case reflect.String:
fl.Field().SetString(fn(fl.Field().String()))
fl.Field().SetString(fn(fl.Field().String(), fl.Param()))
}
return nil
})
Expand Down
2 changes: 1 addition & 1 deletion validation/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import "github.com/rl404/fairy/validation/playground"
// See usage example in example folder.
type Validator interface {
// Register custom modifier.
RegisterModifier(name string, fn func(in string) (out string)) error
RegisterModifier(name string, fn func(in string, param ...string) (out string)) error
// Modify struct field value according to modifier tag.
// Param `data` should be a pointer.
Modify(data interface{}) error
Expand Down

0 comments on commit bfeaf2b

Please sign in to comment.