UNPKG

dtable-utils

Version:

dtable common utils

75 lines (68 loc) 2.21 kB
'use strict'; 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;