diff --git a/src/utils/comparator/Comparator.js b/src/utils/comparator/Comparator.js index 152c1ec1..12957d2d 100644 --- a/src/utils/comparator/Comparator.js +++ b/src/utils/comparator/Comparator.js @@ -1,12 +1,14 @@ export default class Comparator { /** - * @param {function(a: *, b: *)} [compareFunction] + * @param {function(a: *, b: *)} [compareFunction] - It may be custom compare function that, let's + * say may compare custom objects together. */ constructor(compareFunction) { this.compare = compareFunction || Comparator.defaultCompareFunction; } /** + * Default comparison function. It just assumes that "a" and "b" are strings or numbers. * @param {(string|number)} a * @param {(string|number)} b * @returns {number} @@ -19,26 +21,59 @@ export default class Comparator { return a < b ? -1 : 1; } + /** + * Checks if two variables are equal. + * @param {*} a + * @param {*} b + * @return {boolean} + */ equal(a, b) { return this.compare(a, b) === 0; } + /** + * Checks if variable "a" is less than "b". + * @param {*} a + * @param {*} b + * @return {boolean} + */ lessThan(a, b) { return this.compare(a, b) < 0; } + /** + * Checks if variable "a" is greater than "b". + * @param {*} a + * @param {*} b + * @return {boolean} + */ greaterThan(a, b) { return this.compare(a, b) > 0; } + /** + * Checks if variable "a" is less than or equal to "b". + * @param {*} a + * @param {*} b + * @return {boolean} + */ lessThanOrEqual(a, b) { return this.lessThan(a, b) || this.equal(a, b); } + /** + * Checks if variable "a" is greater than or equal to "b". + * @param {*} a + * @param {*} b + * @return {boolean} + */ greaterThanOrEqual(a, b) { return this.greaterThan(a, b) || this.equal(a, b); } + /** + * Reverses the comparison order. + */ reverse() { const compareOriginal = this.compare; this.compare = (a, b) => compareOriginal(b, a);