@atlassian/aui
Version:
Atlassian User Interface Framework
74 lines (60 loc) • 2.04 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['module', 'exports', './internal/globalize'], factory);
} else if (typeof exports !== "undefined") {
factory(module, exports, require('./internal/globalize'));
} else {
var mod = {
exports: {}
};
factory(mod, mod.exports, global.globalize);
global.alphanum = mod.exports;
}
})(this, function (module, exports, _globalize) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _globalize2 = _interopRequireDefault(_globalize);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
/**
* Compare two strings in alphanumeric way
* @method alphanum
* @param {String} a first string to compare
* @param {String} b second string to compare
* @return {Number(-1|0|1)} -1 if a < b, 0 if a = b, 1 if a > b
*/
function alphanum(a, b) {
a = (a + '').toLowerCase();
b = (b + '').toLowerCase();
var chunks = /(\d+|\D+)/g;
var am = a.match(chunks);
var bm = b.match(chunks);
var len = Math.max(am.length, bm.length);
for (var i = 0; i < len; i++) {
if (i === am.length) {
return -1;
}
if (i === bm.length) {
return 1;
}
var ad = parseInt(am[i], 10) + '';
var bd = parseInt(bm[i], 10) + '';
if (ad === am[i] && bd === bm[i] && ad !== bd) {
return (ad - bd) / Math.abs(ad - bd);
}
if ((ad !== am[i] || bd !== bm[i]) && am[i] !== bm[i]) {
return am[i] < bm[i] ? -1 : 1;
}
}
return 0;
}
(0, _globalize2.default)('alphanum', alphanum);
exports.default = alphanum;
module.exports = exports['default'];
});
//# sourceMappingURL=alphanum.js.map