From 3cef97a4527e2b9afff895838fda569ef636062e Mon Sep 17 00:00:00 2001 From: joeybloggs Date: Wed, 30 Sep 2015 08:29:25 -0400 Subject: [PATCH] minor speed improvements * added check for "-" in custom field name --- validator.go | 10 +++++++--- validator_test.go | 9 +++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/validator.go b/validator.go index 7135313..bf04f5d 100644 --- a/validator.go +++ b/validator.go @@ -404,6 +404,7 @@ func (v *Validate) tranverseStruct(topStruct reflect.Value, currentStruct reflec numFields := current.NumField() var fld reflect.StructField + var customName string for i := 0; i < numFields; i++ { fld = typ.Field(i) @@ -421,10 +422,13 @@ func (v *Validate) tranverseStruct(topStruct reflect.Value, currentStruct reflec } } - customName := fld.Name + customName = fld.Name if v.fieldNameTag != "" { - name := strings.Split(fld.Tag.Get(v.fieldNameTag), ",")[0] - if name != "" { + + name := strings.SplitN(fld.Tag.Get(v.fieldNameTag), ",", 2)[0] + + // dash check is for json "-" means don't output in json + if name != "" && name != "-" { customName = name } } diff --git a/validator_test.go b/validator_test.go index 0d2c6bb..6875693 100644 --- a/validator_test.go +++ b/validator_test.go @@ -4936,15 +4936,24 @@ func TestCustomFieldName(t *testing.T) { B string `schema:"b" validate:"required"` C string `schema:"c" validate:"required"` D []bool `schema:"d" validate:"required"` + E string `schema:"-" validate:"required"` } a := &A{} errs := New(&Config{TagName: "validate", FieldNameTag: "schema"}).Struct(a).(ValidationErrors) + NotEqual(t, errs, nil) + Equal(t, len(errs), 4) Equal(t, errs["A.B"].Name, "b") Equal(t, errs["A.C"].Name, "c") Equal(t, errs["A.D"].Name, "d") + Equal(t, errs["A.E"].Name, "E") errs = New(&Config{TagName: "validate"}).Struct(a).(ValidationErrors) + NotEqual(t, errs, nil) + Equal(t, len(errs), 4) Equal(t, errs["A.B"].Name, "B") + Equal(t, errs["A.C"].Name, "C") + Equal(t, errs["A.D"].Name, "D") + Equal(t, errs["A.E"].Name, "E") }