dtable-utils
Version:
dtable common utils
75 lines (68 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var reg = require('../../constants/reg.js');
var sort = require('../../constants/sort.js');
/**
* Compare strings
* @param {string} leftString
* @param {string} rightString
* @returns number
*/
var compareString = function compareString(leftString, rightString) {
if (!leftString && !rightString) return 0;
if (!leftString) return -1;
if (!rightString) return 1;
if (typeof leftString !== 'string' || typeof rightString !== 'string') return 0;
var leftStringParts = leftString.match(reg.REG_STRING_NUMBER_PARTS);
var rightStringParts = rightString.match(reg.REG_STRING_NUMBER_PARTS);
var len = Math.min(leftStringParts.length, rightStringParts.length);
var isDigitPart;
var leftStringPart;
var rightStringPart;
// Loop through each substring part to canCompare the overall strings.
for (var i = 0; i < len; i++) {
leftStringPart = leftStringParts[i];
rightStringPart = rightStringParts[i];
isDigitPart = reg.REG_NUMBER_DIGIT.test(leftStringPart) && reg.REG_NUMBER_DIGIT.test(rightStringPart);
if (isDigitPart) {
leftStringPart = parseInt(leftStringPart);
rightStringPart = parseInt(rightStringPart);
if (leftStringPart > rightStringPart) {
return 1;
}
if (leftStringPart < rightStringPart) {
return -1;
}
}
if (leftStringPart !== rightStringPart) {
return leftString.localeCompare(rightString);
}
}
return leftString.localeCompare(rightString);
};
/**
* Sort text
* @param {string} leftText
* @param {string} rightText
* @param {string} sortType e.g. 'up' | 'down
* @returns number
*/
var sortText = function sortText(leftText, rightText, sortType) {
var emptyLeftText = !leftText;
var emptyRightText = !rightText;
if (emptyLeftText && emptyRightText) {
return 0;
}
if (emptyLeftText) {
return 1;
}
if (emptyRightText) {
return -1;
}
if (rightText === leftText) {
return 0;
}
return sortType === sort.SORT_TYPE.UP ? compareString(leftText, rightText) : -1 * compareString(leftText, rightText);
};
exports.compareString = compareString;
exports.sortText = sortText;