From 11eba2d27b5e51fe8b0a84dc9779ae525cea12e3 Mon Sep 17 00:00:00 2001 From: Haseeb Majid Date: Sat, 21 Nov 2020 14:08:01 +0000 Subject: [PATCH] feat: provide a RegisterTagNameFunc() Provide a public RegisterTagNameFunc in `handler.go`. So clients of Tonic, can register their own tag functions. Fixes #71 --- .gitignore | 1 + tonic/handler.go | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/.gitignore b/.gitignore index 7ea2a93..f827b31 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *TODO* +.history/ \ No newline at end of file diff --git a/tonic/handler.go b/tonic/handler.go index 064c9a7..692a258 100644 --- a/tonic/handler.go +++ b/tonic/handler.go @@ -150,6 +150,21 @@ func RegisterValidation(tagName string, validationFunc validator.Func) error { return validatorObj.RegisterValidation(tagName, validationFunc) } +// RegisterTagNameFunc registers a function to get alternate names for StructFields. +// +// eg. to use the names which have been specified for JSON representations of structs, rather than normal Go field names: +// +// validate.RegisterTagNameFunc(func(fld reflect.StructField) string { +// name := strings.SplitN(fld.Tag.Get("json"), ",", 2)[0] +// if name == "-" { +// return "" +// } +// return name +// } +func RegisterTagNameFunc(registerTagFunc validator.TagNameFunc) { + validatorObj.RegisterTagNameFunc(registerTagFunc) +} + func initValidator() { validatorOnce.Do(func() { validatorObj = validator.New()