frontend/.pnpm-store/v3/files/22/05e000c610f0ab9249c8e73c3787081880dccbf5d9c90ed02b36ceac0ca045a5fbe787be77084234a2b386b5c8fdf548ef656aef23b9438faba6574a84dc3d

32 lines
772 B
Plaintext

// adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956
var NUMBER_PATTERN = /([0-9]+)/;
function naturalCompare(value1, value2) {
var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt);
var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt);
var key1;
var key2;
var compareFirst = Math.min(keys1.length, keys2.length);
var i, l;
for (i = 0, l = compareFirst; i < l; i++) {
key1 = keys1[i];
key2 = keys2[i];
if (key1 != key2) {
return key1 > key2 ? 1 : -1;
}
}
return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1);
}
function tryParseInt(value) {
return ('' + parseInt(value)) == value ?
parseInt(value) :
value;
}
module.exports = naturalCompare;