Skip to content

Commit ab413fe

Browse files
committed
Introduce semverSortArrayHelpers factory
1 parent 7ca023d commit ab413fe

File tree

2 files changed

+60
-32
lines changed

2 files changed

+60
-32
lines changed

angular-semver-sort.js

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,8 +1043,30 @@ if (typeof define === 'function' && define.amd)
10431043
semver = {}
10441044
);
10451045

1046-
;angular.module('semverSort', []).filter('semverSort', [
1047-
'$window', '$log', function($window, $log) {
1046+
;angular.module('semverSort', []).factory('semverSortArrayHelpers', function() {
1047+
'use strict';
1048+
1049+
var sortAlphabetically = function(collection, prop) {
1050+
var items = collection.slice(0);
1051+
return !prop ? items.sort() : items.sort(function(A, B) {
1052+
var a = A[prop], b = B[prop];
1053+
if ( a > b ) return 1;
1054+
if ( a < b ) return -1;
1055+
return 0;
1056+
});
1057+
};
1058+
1059+
var reverse = function(collection) {
1060+
return collection.slice(0).reverse();
1061+
};
1062+
1063+
return {
1064+
sortAlphabetically: sortAlphabetically,
1065+
reverse: reverse
1066+
};
1067+
1068+
}).filter('semverSort', [
1069+
'$window', '$log', 'semverSortArrayHelpers', function($window, $log, _) {
10481070
'use strict';
10491071

10501072
var semver = $window.semver;
@@ -1053,19 +1075,9 @@ if (typeof define === 'function' && define.amd)
10531075
var WARNING_UNAVAILABLE = 'Semver library is unvailable. ' + WARNING_FALLBACK;
10541076
var WARNING_NONSEMVER = 'This collection contains non-semver strings. ' + WARNING_FALLBACK;
10551077

1056-
var sortAlphabetically = function(collection, prop) {
1057-
var items = collection.slice(0);
1058-
return !prop ? items.sort() : items.sort(function(A, B) {
1059-
var a = A[prop], b = B[prop];
1060-
if ( a > b ) return 1;
1061-
if ( a < b ) return -1;
1062-
return 0;
1063-
});
1064-
};
1065-
10661078
if ( !(semver && 'SEMVER_SPEC_VERSION' in semver) ) {
10671079
$log.warn(WARNING_UNAVAILABLE);
1068-
return sortAlphabetically;
1080+
return _.sortAlphabetically;
10691081
}
10701082

10711083
var areItemsValid = function(collection, prop) {
@@ -1080,7 +1092,7 @@ if (typeof define === 'function' && define.amd)
10801092
return function(collection, prop) {
10811093
if ( !areItemsValid(collection, prop) ) {
10821094
$log.warn(WARNING_NONSEMVER);
1083-
return sortAlphabetically(collection, prop);
1095+
return _.sortAlphabetically(collection, prop);
10841096
}
10851097

10861098
var items = collection.slice(0);
@@ -1090,9 +1102,11 @@ if (typeof define === 'function' && define.amd)
10901102
};
10911103
}
10921104
]).filter('semverReverseSort', [
1093-
'$filter', function($filter) {
1105+
'$filter', 'semverSortArrayHelpers', function($filter, _) {
1106+
'use strict';
1107+
10941108
return function(collection, prop) {
1095-
return $filter('semverSort')(collection, prop).slice(0).reverse();
1109+
return _.reverse($filter('semverSort')(collection, prop));
10961110
};
10971111
}
10981112
]);

src/angular-semver-sort.js

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
1-
;angular.module('semverSort', []).filter('semverSort', [
2-
'$window', '$log', function($window, $log) {
1+
;angular.module('semverSort', []).factory('semverSortArrayHelpers', function() {
2+
'use strict';
3+
4+
var sortAlphabetically = function(collection, prop) {
5+
var items = collection.slice(0);
6+
return !prop ? items.sort() : items.sort(function(A, B) {
7+
var a = A[prop], b = B[prop];
8+
if ( a > b ) return 1;
9+
if ( a < b ) return -1;
10+
return 0;
11+
});
12+
};
13+
14+
var reverse = function(collection) {
15+
return collection.slice(0).reverse();
16+
};
17+
18+
return {
19+
sortAlphabetically: sortAlphabetically,
20+
reverse: reverse
21+
};
22+
23+
}).filter('semverSort', [
24+
'$window', '$log', 'semverSortArrayHelpers', function($window, $log, _) {
325
'use strict';
426

527
var semver = $window.semver;
@@ -8,19 +30,9 @@
830
var WARNING_UNAVAILABLE = 'Semver library is unvailable. ' + WARNING_FALLBACK;
931
var WARNING_NONSEMVER = 'This collection contains non-semver strings. ' + WARNING_FALLBACK;
1032

11-
var sortAlphabetically = function(collection, prop) {
12-
var items = collection.slice(0);
13-
return !prop ? items.sort() : items.sort(function(A, B) {
14-
var a = A[prop], b = B[prop];
15-
if ( a > b ) return 1;
16-
if ( a < b ) return -1;
17-
return 0;
18-
});
19-
};
20-
2133
if ( !(semver && 'SEMVER_SPEC_VERSION' in semver) ) {
2234
$log.warn(WARNING_UNAVAILABLE);
23-
return sortAlphabetically;
35+
return _.sortAlphabetically;
2436
}
2537

2638
var areItemsValid = function(collection, prop) {
@@ -35,7 +47,7 @@
3547
return function(collection, prop) {
3648
if ( !areItemsValid(collection, prop) ) {
3749
$log.warn(WARNING_NONSEMVER);
38-
return sortAlphabetically(collection, prop);
50+
return _.sortAlphabetically(collection, prop);
3951
}
4052

4153
var items = collection.slice(0);
@@ -45,9 +57,11 @@
4557
};
4658
}
4759
]).filter('semverReverseSort', [
48-
'$filter', function($filter) {
60+
'$filter', 'semverSortArrayHelpers', function($filter, _) {
61+
'use strict';
62+
4963
return function(collection, prop) {
50-
return $filter('semverSort')(collection, prop).slice(0).reverse();
64+
return _.reverse($filter('semverSort')(collection, prop));
5165
};
5266
}
5367
]);

0 commit comments

Comments
 (0)