@@ -4,14 +4,55 @@ import moment from "moment";
4
4
function checkEmpty ( value , required ) {
5
5
if ( isNil ( value ) || value === "" ) {
6
6
if ( required )
7
- return [ "This field is required!" ] ;
7
+ return [ msg ( resources . fieldIsRequired ) ] ;
8
8
else
9
9
return [ ] ;
10
10
}
11
11
return null ;
12
12
}
13
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
+ let resources = {
23
+ fieldIsRequired : "This field is required!" ,
24
+ invalidFormat : "Invalid format!" ,
25
+
26
+ numberTooSmall : "The number is too small! Minimum: {0}" ,
27
+ numberTooBig : "The number is too big! Maximum: {0}" ,
28
+ invalidNumber : "Invalid number" ,
29
+
30
+ textTooSmall : "The length of text is too small! Current: {0}, Minimum: {1}" ,
31
+ textTooBig : "The length of text is too big! Current: {0}, Maximum: {1}" ,
32
+ thisNotText : "This is not a text!" ,
33
+
34
+ thisNotArray : "This is not an array!" ,
35
+
36
+ selectMinItems : "Select minimum {0} items!" ,
37
+ selectMaxItems : "Select maximum {0} items!" ,
38
+
39
+ invalidDate : "Invalid date!" ,
40
+ dateIsEarly : "The date is too early! Current: {0}, Minimum: {1}" ,
41
+ dateIsLate : "The date is too late! Current: {0}, Maximum: {1}" ,
42
+
43
+ invalidEmail : "Invalid e-mail address!" ,
44
+ invalidURL : "Invalid URL!" ,
45
+
46
+ invalidCard : "Invalid card format!" ,
47
+ invalidCardNumber : "Invalid card number!" ,
48
+
49
+ invalidTextContainNumber : "Invalid text! Cannot contains numbers or special characters" ,
50
+ invalidTextContainSpec : "Invalid text! Cannot contains special characters"
51
+ } ;
52
+
14
53
module . exports = {
54
+
55
+ resources,
15
56
16
57
required ( value , field ) {
17
58
return checkEmpty ( value , field . required ) ;
@@ -23,13 +64,13 @@ module.exports = {
23
64
let err = [ ] ;
24
65
if ( isNumber ( value ) ) {
25
66
if ( ! isNil ( field . min ) && value < field . min )
26
- err . push ( "The number is too small! Minimum: " + field . min ) ;
67
+ err . push ( msg ( resources . numberTooSmall , field . min ) ) ;
27
68
28
69
if ( ! isNil ( field . max ) && value > field . max )
29
- err . push ( "The number is too big! Maximum: " + field . max ) ;
70
+ err . push ( msg ( resources . numberTooBig , field . max ) ) ;
30
71
31
72
} else
32
- err . push ( "This is not a number!" ) ;
73
+ err . push ( msg ( resources . invalidNumber ) ) ;
33
74
34
75
return err ;
35
76
} ,
@@ -38,14 +79,14 @@ module.exports = {
38
79
let res = checkEmpty ( value , field . required ) ; if ( res != null ) return res ;
39
80
40
81
if ( ! ( Number ( value ) === value && value % 1 === 0 ) )
41
- return [ "Invalid number!" ] ;
82
+ return [ msg ( resources . invalidNumber ) ] ;
42
83
} ,
43
84
44
85
double ( value , field ) {
45
86
let res = checkEmpty ( value , field . required ) ; if ( res != null ) return res ;
46
87
47
88
if ( ! ( Number ( value ) === value && value % 1 !== 0 ) )
48
- return [ "Invalid number!" ] ;
89
+ return [ msg ( resources . invalidNumber ) ] ;
49
90
} ,
50
91
51
92
string ( value , field ) {
@@ -54,13 +95,13 @@ module.exports = {
54
95
let err = [ ] ;
55
96
if ( isString ( value ) ) {
56
97
if ( ! isNil ( field . min ) && value . length < field . min )
57
- err . push ( `The length of text is too small! Current: ${ value . length } , Minimum: ${ field . min } ` ) ;
98
+ err . push ( msg ( resources . textTooSmall , value . length , field . min ) ) ;
58
99
59
100
if ( ! isNil ( field . max ) && value . length > field . max )
60
- err . push ( `The length of text is too big! Current: ${ value . length } , Maximum: ${ field . max } ` ) ;
101
+ err . push ( msg ( resources . textTooBig , value . length , field . max ) ) ;
61
102
62
103
} else
63
- err . push ( "This is not a text!" ) ;
104
+ err . push ( msg ( resources . thisNotText ) ) ;
64
105
65
106
return err ;
66
107
} ,
@@ -69,20 +110,20 @@ module.exports = {
69
110
if ( field . required ) {
70
111
71
112
if ( ! isArray ( value ) )
72
- return [ "Value is not an array!" ] ;
113
+ return [ msg ( resources . thisNotArray ) ] ;
73
114
74
115
if ( value . length == 0 )
75
- return [ "This field is required!" ] ;
116
+ return [ msg ( resources . fieldIsRequired ) ] ;
76
117
}
77
118
78
119
if ( ! isNil ( value ) ) {
79
120
if ( ! isNil ( field . min ) )
80
121
if ( value . length < field . min )
81
- return [ "Select minimum " + field . min + " items!" ] ;
122
+ return [ msg ( resources . selectMinItems , field . min ) ] ;
82
123
83
124
if ( ! isNil ( field . max ) )
84
125
if ( value . length > field . max )
85
- return [ "Select maximum " + field . max + " items!" ] ;
126
+ return [ msg ( resources . selectMaxItems , field . max ) ] ;
86
127
}
87
128
} ,
88
129
@@ -91,20 +132,20 @@ module.exports = {
91
132
92
133
let m = moment ( value ) ;
93
134
if ( ! m . isValid ( ) )
94
- return [ "Invalid date!" ] ;
135
+ return [ msg ( resources . invalidDate ) ] ;
95
136
96
137
let err = [ ] ;
97
138
98
139
if ( ! isNil ( field . min ) ) {
99
140
let min = moment ( field . min ) ;
100
141
if ( m . isBefore ( min ) )
101
- err . push ( `The date is too early! Current: ${ m . format ( "L" ) } , Minimum: ${ min . format ( "L" ) } ` ) ;
142
+ err . push ( msg ( resources . dateIsEarly , m . format ( "L" ) , min . format ( "L" ) ) ) ;
102
143
}
103
144
104
145
if ( ! isNil ( field . max ) ) {
105
146
let max = moment ( field . max ) ;
106
147
if ( m . isAfter ( max ) )
107
- err . push ( `The date is too late! Current: ${ m . format ( "L" ) } , Maximum: ${ max . format ( "L" ) } ` ) ;
148
+ err . push ( msg ( resources . dateIsLate , m . format ( "L" ) , max . format ( "L" ) ) ) ;
108
149
}
109
150
110
151
return err ;
@@ -116,7 +157,7 @@ module.exports = {
116
157
if ( ! isNil ( field . pattern ) ) {
117
158
let re = new RegExp ( field . pattern ) ;
118
159
if ( ! re . test ( value ) )
119
- return [ "Invalid format!" ] ;
160
+ return [ msg ( resources . invalidFormat ) ] ;
120
161
}
121
162
} ,
122
163
@@ -125,15 +166,15 @@ module.exports = {
125
166
126
167
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 , } ) ) $ / ;
127
168
if ( ! re . test ( value ) )
128
- return [ "Invalid e-mail address!" ] ;
169
+ return [ msg ( resources . invalidEmail ) ] ;
129
170
} ,
130
171
131
172
url ( value , field ) {
132
173
let res = checkEmpty ( value , field . required ) ; if ( res != null ) return res ;
133
174
134
175
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;
135
176
if ( ! re . test ( value ) )
136
- return [ "Invalid URL!" ] ;
177
+ return [ msg ( resources . invalidURL ) ] ;
137
178
} ,
138
179
139
180
creditCard ( value , field ) {
@@ -145,7 +186,7 @@ module.exports = {
145
186
const creditCard = / ^ (?: 4 [ 0 - 9 ] { 12 } (?: [ 0 - 9 ] { 3 } ) ? | 5 [ 1 - 5 ] [ 0 - 9 ] { 14 } | 6 (?: 0 1 1 | 5 [ 0 - 9 ] [ 0 - 9 ] ) [ 0 - 9 ] { 12 } | 3 [ 4 7 ] [ 0 - 9 ] { 13 } | 3 (?: 0 [ 0 - 5 ] | [ 6 8 ] [ 0 - 9 ] ) [ 0 - 9 ] { 11 } | (?: 2 1 3 1 | 1 8 0 0 | 3 5 \d { 3 } ) \d { 11 } ) $ / ;
146
187
const sanitized = value . replace ( / [ ^ 0 - 9 ] + / g, "" ) ;
147
188
if ( ! creditCard . test ( sanitized ) ) {
148
- return [ "Invalid card format!" ] ;
189
+ return [ msg ( resources . invalidCard ) ] ;
149
190
}
150
191
let sum = 0 ;
151
192
let digit ;
@@ -168,22 +209,22 @@ module.exports = {
168
209
}
169
210
170
211
if ( ! ( ( sum % 10 ) === 0 ? sanitized : false ) )
171
- return [ "Invalid card number!" ] ;
212
+ return [ msg ( resources . invalidCardNumber ) ] ;
172
213
} ,
173
214
174
215
alpha ( value , field ) {
175
216
let res = checkEmpty ( value , field . required ) ; if ( res != null ) return res ;
176
217
177
218
let re = / ^ [ a - z A - Z ] * $ / ;
178
219
if ( ! re . test ( value ) )
179
- return [ "Invalid text! Cannot contains numbers or special characters" ] ;
220
+ return [ msg ( resources . invalidTextContainNumber ) ] ;
180
221
} ,
181
222
182
223
alphaNumeric ( value , field ) {
183
224
let res = checkEmpty ( value , field . required ) ; if ( res != null ) return res ;
184
225
185
226
let re = / ^ [ a - z A - Z 0 - 9 ] * $ / ;
186
227
if ( ! re . test ( value ) )
187
- return [ "Invalid text! Cannot contains special characters" ] ;
228
+ return [ msg ( resources . invalidTextContainSpec ) ] ;
188
229
}
189
230
} ;
0 commit comments