aboutsummaryrefslogtreecommitdiff
path: root/node_modules/clean-css/lib/utils/natural-compare.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/clean-css/lib/utils/natural-compare.js')
-rw-r--r--node_modules/clean-css/lib/utils/natural-compare.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/node_modules/clean-css/lib/utils/natural-compare.js b/node_modules/clean-css/lib/utils/natural-compare.js
new file mode 100644
index 000000000..7a5246762
--- /dev/null
+++ b/node_modules/clean-css/lib/utils/natural-compare.js
@@ -0,0 +1,31 @@
+// 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;