rework code to allow handling of comma (,) and = within the params i.e. excludesall=,=

add test cases for comma and = validation within params
add documentation stating how to include a comma within the parameters

for #67
pull/68/head
joeybloggs 10 years ago
parent c6a510f8a9
commit 0fbc3228e8
  1. 5
      doc.go
  2. 5
      validator.go
  3. 10
      validator_test.go

@ -143,6 +143,11 @@ NOTE: Baked In Cross field validation only compares fields on the same struct,
if cross field + cross struct validation is needed your own custom validator
should be implemented.
NOTE2: comma is the default separator of validation tags, if you wish to have a comma
included within the parameter i.e. excludesall=, you will need to use the UTF-8 hex
representation 0x2C, which is replaced in the code as a comma, so the above will
become excludesall=0x2C
Here is a list of the current built in validators:
-

@ -20,6 +20,7 @@ import (
)
const (
utf8HexComma = "0x2C"
tagSeparator = ","
orSeparator = "|"
noValidationTag = "-"
@ -428,7 +429,7 @@ func (v *Validate) fieldWithNameAndValue(val interface{}, current interface{}, f
cField.tags = append(cField.tags, cTag)
for i, val := range orVals {
vals := strings.Split(val, tagKeySeparator)
vals := strings.SplitN(val, tagKeySeparator, 2)
key := strings.TrimSpace(vals[0])
@ -438,7 +439,7 @@ func (v *Validate) fieldWithNameAndValue(val interface{}, current interface{}, f
param := ""
if len(vals) > 1 {
param = vals[1]
param = strings.Replace(vals[1], utf8HexComma, ",", -1)
}
cTag.keyVals[i] = []string{key, param}

@ -281,6 +281,16 @@ func TestExcludesAllValidation(t *testing.T) {
err := validate.Field(username, "excludesall=@ ")
NotEqual(t, err, nil)
excluded := ","
err = validate.Field(excluded, "excludesall=!@#$%^&*()_+.0x2C?")
NotEqual(t, err, nil)
excluded = "="
err = validate.Field(excluded, "excludesall=!@#$%^&*()_+.0x2C=?")
NotEqual(t, err, nil)
}
func TestExcludesValidation(t *testing.T) {

Loading…
Cancel
Save