'use strict';
var dotPropGet = require('dot-prop').get;

module.exports = function (arr, prop) {
	if (!Array.isArray(arr)) {
		throw new TypeError('Expected an array');
	}

	arr = arr.slice();

	(Array.isArray(prop) ? prop : [prop]).forEach(function (el) {
		arr.sort(function (a, b) {
			if (typeof el === 'function') {
				a = el(a);
				b = el(b);
			}

			if (typeof el === 'string') {
				a = dotPropGet(a, el);
				b = dotPropGet(b, el);
			}

			if (typeof a === 'string' && typeof b === 'string') {
				return a.localeCompare(b);
			}

			if (a === b) {
				return 0;
			}

			return a < b ? -1 : 1;
		});
	});

	return arr;
};

@@ -18,19 +18,16 @@
  dotProp
-Get
  = requi
@@ -40,16 +40,42 @@
 t-prop')
+;%0Avar dotPropGet = dotProp
 .get;%0A%0Am
@@ -194,13 +194,14 @@
 %7D%0A%0A%09
-arr =
+return
  arr
@@ -208,19 +208,57 @@
 .slice()
+.sort(function (a, b) %7B%0A%09%09var ret = 0
 ;%0A%0A
+%09
 %09(Array.
@@ -318,34 +318,34 @@
 %7B%0A%09%09
-arr.sort(function (a, b) %7B
+%09var x = a;%0A%09%09%09var y = b;%0A
 %0A%09%09%09
@@ -384,31 +384,31 @@
 %09%09%09%09
-a
+x
  = el(
-a
+x
 );%0A%09%09%09%09
-b
+y
  = el(
-b
+y
 );%0A%09
@@ -449,17 +449,17 @@
 ) %7B%0A%09%09%09%09
-a
+x
  = dotPr
@@ -464,17 +464,17 @@
 PropGet(
-a
+x
 , el);%0A%09
@@ -476,17 +476,17 @@
 l);%0A%09%09%09%09
-b
+y
  = dotPr
@@ -491,17 +491,17 @@
 PropGet(
-b
+y
 , el);%0A%09
@@ -497,32 +497,114 @@
 t(y, el);%0A%09%09%09%7D%0A%0A
+%09%09%09// lower priority for each prop%0A%09%09%09ret++;%0A%0A%09%09%09if (x === y) %7B%0A%09%09%09%09return;%0A%09%09%09%7D%0A%0A
 %09%09%09if (typeof a 
@@ -601,17 +601,17 @@
 (typeof 
-a
+x
  === 'st
@@ -626,17 +626,17 @@
  typeof 
-b
+y
  === 'st
@@ -651,21 +651,21 @@
 %0A%09%09%09%09ret
-urn a
+ += x
 .localeC
@@ -675,36 +675,12 @@
 are(
-b
+y
 );%0A
-%09%09%09%7D%0A%0A%09%09%09if (a === b) %7B%0A
 %09%09%09%09
@@ -685,18 +685,16 @@
 %09%09return
- 0
 ;%0A%09%09%09%7D%0A%0A
@@ -703,17 +703,17 @@
 %09ret
-urn a %3C b
+ += x %3C y
  ? -
@@ -729,22 +729,18 @@
 %7D);%0A
-%09%7D);%0A
 %0A
+%09
 %09return 
 arr;
@@ -735,16 +735,21 @@
 %09return 
-arr
+ret;%0A%09%7D)
 ;%0A%7D;%0A

fix failing test