UNPKG

dist-javascript-algorithms-and-data-structures

Version:

Algorithms and data-structures implemented on JavaScript

46 lines (35 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _Comparator = _interopRequireDefault(require("../../utils/comparator/Comparator")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @typedef {Object} SorterCallbacks * @property {function(a: *, b: *)} compareCallback - If provided then all elements comparisons * will be done through this callback. * @property {function(a: *)} visitingCallback - If provided it will be called each time the sorting * function is visiting the next element. */ class Sort { constructor(originalCallbacks) { this.callbacks = Sort.initSortingCallbacks(originalCallbacks); this.comparator = new _Comparator.default(this.callbacks.compareCallback); } /** * @param {SorterCallbacks} originalCallbacks * @returns {SorterCallbacks} */ static initSortingCallbacks(originalCallbacks) { const callbacks = originalCallbacks || {}; const stubCallback = () => {}; callbacks.compareCallback = callbacks.compareCallback || undefined; callbacks.visitingCallback = callbacks.visitingCallback || stubCallback; return callbacks; } sort() { throw new Error('sort method must be implemented'); } } exports.default = Sort;