@@ -5,43 +5,77 @@ import (
55 "net/url"
66 "reflect"
77 "strconv"
8+ "strings"
89 "time"
10+ "unicode/utf8"
911)
1012
1113// BakedInValidators is the default map of ValidationFunc
1214// you can add, remove or even replace items to suite your needs,
1315// or even disregard and use your own map if so desired.
1416var BakedInValidators = map [string ]Func {
15- "required" : hasValue ,
16- "len" : hasLengthOf ,
17- "min" : hasMinOf ,
18- "max" : hasMaxOf ,
19- "eq" : isEq ,
20- "ne" : isNe ,
21- "lt" : isLt ,
22- "lte" : isLte ,
23- "gt" : isGt ,
24- "gte" : isGte ,
25- "eqfield" : isEqField ,
26- "nefield" : isNeField ,
27- "gtefield" : isGteField ,
28- "gtfield" : isGtField ,
29- "ltefield" : isLteField ,
30- "ltfield" : isLtField ,
31- "alpha" : isAlpha ,
32- "alphanum" : isAlphanum ,
33- "numeric" : isNumeric ,
34- "number" : isNumber ,
35- "hexadecimal" : isHexadecimal ,
36- "hexcolor" : isHexcolor ,
37- "rgb" : isRgb ,
38- "rgba" : isRgba ,
39- "hsl" : isHsl ,
40- "hsla" : isHsla ,
41- "email" : isEmail ,
42- "url" : isURL ,
43- "uri" : isURI ,
44- "base64" : isBase64 ,
17+ "required" : hasValue ,
18+ "len" : hasLengthOf ,
19+ "min" : hasMinOf ,
20+ "max" : hasMaxOf ,
21+ "eq" : isEq ,
22+ "ne" : isNe ,
23+ "lt" : isLt ,
24+ "lte" : isLte ,
25+ "gt" : isGt ,
26+ "gte" : isGte ,
27+ "eqfield" : isEqField ,
28+ "nefield" : isNeField ,
29+ "gtefield" : isGteField ,
30+ "gtfield" : isGtField ,
31+ "ltefield" : isLteField ,
32+ "ltfield" : isLtField ,
33+ "alpha" : isAlpha ,
34+ "alphanum" : isAlphanum ,
35+ "numeric" : isNumeric ,
36+ "number" : isNumber ,
37+ "hexadecimal" : isHexadecimal ,
38+ "hexcolor" : isHexcolor ,
39+ "rgb" : isRgb ,
40+ "rgba" : isRgba ,
41+ "hsl" : isHsl ,
42+ "hsla" : isHsla ,
43+ "email" : isEmail ,
44+ "url" : isURL ,
45+ "uri" : isURI ,
46+ "base64" : isBase64 ,
47+ "contains" : contains ,
48+ "containsany" : containsAny ,
49+ "containsrune" : containsRune ,
50+ "excludes" : excludes ,
51+ "excludesall" : excludesAll ,
52+ "excludesrune" : excludesRune ,
53+ }
54+
55+ func excludesRune (top interface {}, current interface {}, field interface {}, param string ) bool {
56+ return ! containsRune (top , current , field , param )
57+ }
58+
59+ func excludesAll (top interface {}, current interface {}, field interface {}, param string ) bool {
60+ return ! containsAny (top , current , field , param )
61+ }
62+
63+ func excludes (top interface {}, current interface {}, field interface {}, param string ) bool {
64+ return ! contains (top , current , field , param )
65+ }
66+
67+ func containsRune (top interface {}, current interface {}, field interface {}, param string ) bool {
68+ r , _ := utf8 .DecodeRuneInString (param )
69+
70+ return strings .ContainsRune (field .(string ), r )
71+ }
72+
73+ func containsAny (top interface {}, current interface {}, field interface {}, param string ) bool {
74+ return strings .ContainsAny (field .(string ), param )
75+ }
76+
77+ func contains (top interface {}, current interface {}, field interface {}, param string ) bool {
78+ return strings .Contains (field .(string ), param )
4579}
4680
4781func isNeField (top interface {}, current interface {}, field interface {}, param string ) bool {
0 commit comments