1
1
import { defaults , isNil , isNumber , isString , isArray , isFunction } from "lodash" ;
2
2
import fecha from "fecha" ;
3
3
4
- function checkEmpty ( value , required , messages ) {
5
- if ( isNil ( value ) || value === "" ) {
6
- if ( required )
7
- return [ msg ( messages . fieldIsRequired ) ] ;
8
- else
9
- return [ ] ;
10
- }
11
- return null ;
12
- }
13
-
14
- function msg ( text ) {
15
- if ( text != null && arguments . length > 1 )
16
- for ( let i = 1 ; i < arguments . length ; i ++ )
17
- text = text . replace ( / \{ \d + ?\} / , arguments [ i ] ) ;
18
-
19
- return text ;
20
- }
21
-
22
4
let resources = {
23
5
fieldIsRequired : "This field is required!" ,
24
6
invalidFormat : "Invalid format!" ,
@@ -50,15 +32,34 @@ let resources = {
50
32
invalidTextContainSpec : "Invalid text! Cannot contains special characters"
51
33
} ;
52
34
35
+
36
+ function checkEmpty ( value , required , messages = resources ) {
37
+ if ( isNil ( value ) || value === "" ) {
38
+ if ( required )
39
+ return [ msg ( messages . fieldIsRequired ) ] ;
40
+ else
41
+ return [ ] ;
42
+ }
43
+ return null ;
44
+ }
45
+
46
+ function msg ( text ) {
47
+ if ( text != null && arguments . length > 1 )
48
+ for ( let i = 1 ; i < arguments . length ; i ++ )
49
+ text = text . replace ( / \{ \d + ?\} / , arguments [ i ] ) ;
50
+
51
+ return text ;
52
+ }
53
+
53
54
module . exports = {
54
55
55
56
resources,
56
57
57
- required ( value , field , messages = resources ) {
58
+ required ( value , field , model , messages = resources ) {
58
59
return checkEmpty ( value , field . required , messages ) ;
59
60
} ,
60
61
61
- number ( value , field , messages = resources ) {
62
+ number ( value , field , model , messages = resources ) {
62
63
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
63
64
64
65
let err = [ ] ;
@@ -75,21 +76,21 @@ module.exports = {
75
76
return err ;
76
77
} ,
77
78
78
- integer ( value , field , messages = resources ) {
79
+ integer ( value , field , model , messages = resources ) {
79
80
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
80
81
81
82
if ( ! ( Number ( value ) === value && value % 1 === 0 ) )
82
83
return [ msg ( messages . invalidNumber ) ] ;
83
84
} ,
84
85
85
- double ( value , field , messages = resources ) {
86
+ double ( value , field , model , messages = resources ) {
86
87
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
87
88
88
89
if ( ! isNumber ( value ) || isNaN ( value ) )
89
90
return [ msg ( messages . invalidNumber ) ] ;
90
91
} ,
91
92
92
- string ( value , field , messages = resources ) {
93
+ string ( value , field , model , messages = resources ) {
93
94
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
94
95
95
96
let err = [ ] ;
@@ -106,7 +107,7 @@ module.exports = {
106
107
return err ;
107
108
} ,
108
109
109
- array ( value , field , messages = resources ) {
110
+ array ( value , field , model , messages = resources ) {
110
111
if ( field . required ) {
111
112
112
113
if ( ! isArray ( value ) )
@@ -127,7 +128,7 @@ module.exports = {
127
128
}
128
129
} ,
129
130
130
- date ( value , field , messages = resources ) {
131
+ date ( value , field , model , messages = resources ) {
131
132
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
132
133
133
134
let m = new Date ( value ) ;
@@ -151,7 +152,7 @@ module.exports = {
151
152
return err ;
152
153
} ,
153
154
154
- regexp ( value , field , messages = resources ) {
155
+ regexp ( value , field , model , messages = resources ) {
155
156
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
156
157
157
158
if ( ! isNil ( field . pattern ) ) {
@@ -161,23 +162,23 @@ module.exports = {
161
162
}
162
163
} ,
163
164
164
- email ( value , field , messages = resources ) {
165
+ email ( value , field , model , messages = resources ) {
165
166
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
166
167
167
168
let re = / ^ ( ( [ ^ < > ( ) \[ \] \\ . , ; : \s @ " ] + ( \. [ ^ < > ( ) \[ \] \\ . , ; : \s @ " ] + ) * ) | ( " .+ " ) ) @ ( ( \[ [ 0 - 9 ] { 1 , 3 } \. [ 0 - 9 ] { 1 , 3 } \. [ 0 - 9 ] { 1 , 3 } \. [ 0 - 9 ] { 1 , 3 } ] ) | ( ( [ a - z A - Z \- 0 - 9 ] + \. ) + [ a - z A - Z ] { 2 , } ) ) $ / ;
168
169
if ( ! re . test ( value ) )
169
170
return [ msg ( messages . invalidEmail ) ] ;
170
171
} ,
171
172
172
- url ( value , field , messages = resources ) {
173
+ url ( value , field , model , messages = resources ) {
173
174
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
174
175
175
176
let re = / h t t p s ? : \/ \/ ( w w w \. ) ? [ - a - z A - Z 0 - 9 @ : % . _ \+ ~ # = ] { 2 , 256 } \. [ a - z ] { 2 , 4 } \b ( [ - a - z A - Z 0 - 9 @ : % _ \+ . ~ # ? & / / = ] * ) / g;
176
177
if ( ! re . test ( value ) )
177
178
return [ msg ( messages . invalidURL ) ] ;
178
179
} ,
179
180
180
- creditCard ( value , field , messages = resources ) {
181
+ creditCard ( value , field , model , messages = resources ) {
181
182
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
182
183
183
184
/* From validator.js code
@@ -212,15 +213,15 @@ module.exports = {
212
213
return [ msg ( messages . invalidCardNumber ) ] ;
213
214
} ,
214
215
215
- alpha ( value , field , messages = resources ) {
216
+ alpha ( value , field , model , messages = resources ) {
216
217
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
217
218
218
219
let re = / ^ [ a - z A - Z ] * $ / ;
219
220
if ( ! re . test ( value ) )
220
221
return [ msg ( messages . invalidTextContainNumber ) ] ;
221
222
} ,
222
223
223
- alphaNumeric ( value , field , messages = resources ) {
224
+ alphaNumeric ( value , field , model , messages = resources ) {
224
225
let res = checkEmpty ( value , field . required , messages ) ; if ( res != null ) return res ;
225
226
226
227
let re = / ^ [ a - z A - Z 0 - 9 ] * $ / ;
@@ -234,7 +235,7 @@ Object.keys(module.exports).forEach(name => {
234
235
if ( isFunction ( fn ) ) {
235
236
fn . locale = ( customMessages ) => {
236
237
const messages = defaults ( customMessages , resources ) ;
237
- return ( value , field ) => fn ( value , field , messages ) ;
238
+ return ( value , field , model ) => fn ( value , field , model , messages ) ;
238
239
} ;
239
240
}
240
241
} ) ;
0 commit comments