diff options
Diffstat (limited to 'node_modules/alphanum-sort/lib/index.js')
| -rw-r--r-- | node_modules/alphanum-sort/lib/index.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/node_modules/alphanum-sort/lib/index.js b/node_modules/alphanum-sort/lib/index.js new file mode 100644 index 00000000..9df38f02 --- /dev/null +++ b/node_modules/alphanum-sort/lib/index.js @@ -0,0 +1,34 @@ +var compare = require('./compare'); + +function mediator(a, b) { + return compare(this, a.converted, b.converted); +} + +module.exports = function (array, opts) { + if (!Array.isArray(array) || array.length < 2) { + return array; + } + if (typeof opts !== 'object') { + opts = {}; + } + opts.sign = !!opts.sign; + var insensitive = !!opts.insensitive; + var result = Array(array.length); + var i, max, value; + + for (i = 0, max = array.length; i < max; i += 1) { + value = String(array[i]); + result[i] = { + value: array[i], + converted: insensitive ? value.toLowerCase() : value + }; + } + + result.sort(mediator.bind(opts)); + + for (i = result.length - 1; ~i; i -= 1) { + result[i] = result[i].value; + } + + return result; +}; |
