1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 | 1×
1×
1×
44×
44×
44×
44×
44×
44×
44×
44×
44×
44×
106×
16×
90×
2×
88×
6×
82×
6×
76×
6×
70×
6×
64×
6×
58×
6×
52×
5×
47×
5×
| import Validators from './validators'
import { prepareMsg, prepare, isNumber, selectNum, trunc, memoize } from './helpers'
let numericality = memoize(function ({
int,
integer,
even,
odd,
'=': equal,
equalTo,
'!=': diff,
otherThan,
'>': greater,
greaterThan,
'<': less,
lessThan,
'>=': greaterOrEqual,
greaterThanOrEqualTo,
'<=': lessOrEqual,
lessThanOrEqualTo,
message,
msg,
if: ifCond,
unless,
allowBlank
} = {}) {
msg = msg || message
int = int || integer
equal = selectNum(equal, equalTo)
diff = selectNum(diff, otherThan)
greater = selectNum(greater, greaterThan)
greaterOrEqual = selectNum(greaterOrEqual, greaterThanOrEqualTo)
less = selectNum(less, lessThan)
lessOrEqual = selectNum(lessOrEqual, lessThanOrEqualTo)
return prepare(ifCond, unless, allowBlank, function (value) {
if (!isNumber(value)) {
return Validators.formatMessage(prepareMsg(msg, 'notANumber'))
}
if (int && +value % 1) {
return Validators.formatMessage(prepareMsg(msg, 'notAnInteger'))
}
if (equal !== null && +value !== equal) {
return Validators.formatMessage(prepareMsg(msg, 'equalTo', { count: equal }))
}
if (diff !== null && +value === diff) {
return Validators.formatMessage(prepareMsg(msg, 'otherThan', { count: diff }))
}
if (greater !== null && +value <= greater) {
return Validators.formatMessage(prepareMsg(msg, 'greaterThan', { count: greater }))
}
if (greaterOrEqual !== null && +value < greaterOrEqual) {
return Validators.formatMessage(prepareMsg(msg, 'greaterThanOrEqualTo', { count: greaterOrEqual }))
}
if (less !== null && +value >= less) {
return Validators.formatMessage(prepareMsg(msg, 'lessThan', { count: less }))
}
if (lessOrEqual !== null && +value > lessOrEqual) {
return Validators.formatMessage(prepareMsg(msg, 'lessThanOrEqualTo', { count: lessOrEqual }))
}
if (even && trunc(+value) % 2) {
return Validators.formatMessage(prepareMsg(msg, 'even'))
}
if (odd && !(trunc(+value) % 2)) {
return Validators.formatMessage(prepareMsg(msg, 'odd'))
}
})
})
export default numericality
|