1
1
export default class Comparator {
2
2
/**
3
- * @param {function(a: *, b: *) } [compareFunction]
3
+ * @param {function(a: *, b: *) } [compareFunction] - It may be custom compare function that, let's
4
+ * say may compare custom objects together.
4
5
*/
5
6
constructor ( compareFunction ) {
6
7
this . compare = compareFunction || Comparator . defaultCompareFunction ;
7
8
}
8
9
9
10
/**
11
+ * Default comparison function. It just assumes that "a" and "b" are strings or numbers.
10
12
* @param {(string|number) } a
11
13
* @param {(string|number) } b
12
14
* @returns {number }
@@ -19,26 +21,59 @@ export default class Comparator {
19
21
return a < b ? - 1 : 1 ;
20
22
}
21
23
24
+ /**
25
+ * Checks if two variables are equal.
26
+ * @param {* } a
27
+ * @param {* } b
28
+ * @return {boolean }
29
+ */
22
30
equal ( a , b ) {
23
31
return this . compare ( a , b ) === 0 ;
24
32
}
25
33
34
+ /**
35
+ * Checks if variable "a" is less than "b".
36
+ * @param {* } a
37
+ * @param {* } b
38
+ * @return {boolean }
39
+ */
26
40
lessThan ( a , b ) {
27
41
return this . compare ( a , b ) < 0 ;
28
42
}
29
43
44
+ /**
45
+ * Checks if variable "a" is greater than "b".
46
+ * @param {* } a
47
+ * @param {* } b
48
+ * @return {boolean }
49
+ */
30
50
greaterThan ( a , b ) {
31
51
return this . compare ( a , b ) > 0 ;
32
52
}
33
53
54
+ /**
55
+ * Checks if variable "a" is less than or equal to "b".
56
+ * @param {* } a
57
+ * @param {* } b
58
+ * @return {boolean }
59
+ */
34
60
lessThanOrEqual ( a , b ) {
35
61
return this . lessThan ( a , b ) || this . equal ( a , b ) ;
36
62
}
37
63
64
+ /**
65
+ * Checks if variable "a" is greater than or equal to "b".
66
+ * @param {* } a
67
+ * @param {* } b
68
+ * @return {boolean }
69
+ */
38
70
greaterThanOrEqual ( a , b ) {
39
71
return this . greaterThan ( a , b ) || this . equal ( a , b ) ;
40
72
}
41
73
74
+ /**
75
+ * Reverses the comparison order.
76
+ */
42
77
reverse ( ) {
43
78
const compareOriginal = this . compare ;
44
79
this . compare = ( a , b ) => compareOriginal ( b , a ) ;
0 commit comments