@@ -53,8 +53,7 @@ grunt.registerTask( "build-index", function() {
53
53
function parseReleases ( files , regex ) {
54
54
return files
55
55
. map ( function ( filename ) {
56
- var type ,
57
- matches = regex . exec ( filename ) ;
56
+ var matches = regex . exec ( filename ) ;
58
57
59
58
// matches[ 3 ] = "min" or "pack" or ""
60
59
if ( ! matches || matches [ 3 ] ) {
@@ -74,17 +73,36 @@ grunt.registerTask( "build-index", function() {
74
73
} ) ;
75
74
}
76
75
76
+ function parseStableReleases ( ) {
77
+ return parseReleases . apply ( null , arguments )
78
+ . filter ( function ( release ) {
79
+
80
+ // Filter out non-stable releases via this semver trick.
81
+ return semver . satisfies ( release . version , ">=0" )
82
+ } )
83
+ }
84
+
85
+ function groupByMajor ( releases ) {
86
+ return _ ( releases )
87
+ . groupBy ( function ( release ) {
88
+ return semver . major ( release . version ) ;
89
+ } )
90
+ . map ( function ( group , key ) {
91
+ return [ key , group ]
92
+ } )
93
+ . sortBy ( function ( group ) {
94
+ return group [ 0 ] ;
95
+ } )
96
+ . reverse ( )
97
+ . value ( )
98
+ }
99
+
77
100
function getCoreData ( ) {
78
101
var files = grunt . file . expand ( "cdn/*.js" ) ,
79
- coreReleases = parseReleases ( files ,
102
+ coreReleases = parseStableReleases ( files ,
80
103
/ ( j q u e r y - ( \d + \. \d + (?: \. \d + ) ? [ ^ . ] * ) (?: \. ( m i n | p a c k ) ) ? \. j s ) / ) ,
81
- jquery2Releases = coreReleases . filter ( function ( match ) {
82
- return semver . satisfies ( match . version , "2.x" ) ;
83
- } ) ,
84
- jquery1Releases = coreReleases . filter ( function ( match ) {
85
- return semver . satisfies ( match . version , "1.x" ) ;
86
- } ) ,
87
- migrateReleases = parseReleases ( files ,
104
+ coreReleasesGrouped = groupByMajor ( coreReleases ) ,
105
+ migrateReleases = parseStableReleases ( files ,
88
106
/ ( j q u e r y - m i g r a t e - ( \d + \. \d + (?: \. \d + ) ? [ ^ . ] * ) (?: \. ( m i n ) ) ? \. j s ) / ) ;
89
107
90
108
function addTypes ( release ) {
@@ -99,24 +117,27 @@ grunt.registerTask( "build-index", function() {
99
117
}
100
118
}
101
119
102
- jquery1Releases . forEach ( addTypes ) ;
103
- jquery2Releases . forEach ( addTypes ) ;
120
+ coreReleasesGrouped . forEach ( function ( group ) {
121
+ group [ 1 ] . forEach ( addTypes ) ;
122
+ } ) ;
104
123
migrateReleases . forEach ( addTypes ) ;
105
124
106
- return {
107
- jquery2 : {
108
- latestStable : getLatestStable ( jquery2Releases ) ,
109
- all : jquery2Releases
110
- } ,
111
- jquery1 : {
112
- latestStable : getLatestStable ( jquery1Releases ) ,
113
- all : jquery1Releases
114
- } ,
125
+ var index = {
126
+ jquery : [ ] ,
115
127
migrate : {
116
128
latestStable : getLatestStable ( migrateReleases ) ,
117
129
all : migrateReleases
118
130
}
119
131
} ;
132
+
133
+ coreReleasesGrouped . forEach ( function ( group ) {
134
+ index . jquery . push ( [ group [ 0 ] , {
135
+ latestStable : getLatestStable ( group [ 1 ] ) ,
136
+ all : group [ 1 ]
137
+ } ] ) ;
138
+ } ) ;
139
+
140
+ return index ;
120
141
}
121
142
122
143
function getUiData ( ) {
@@ -213,7 +234,7 @@ grunt.registerTask( "build-index", function() {
213
234
214
235
function getColorData ( ) {
215
236
var files = grunt . file . expand ( "cdn/color/*.js" ) ,
216
- releases = parseReleases ( files ,
237
+ releases = parseStableReleases ( files ,
217
238
/ ( c o l o r \/ j q u e r y .c o l o r - ( \d + \. \d + (?: \. \d + ) ? [ ^ . ] * ) (?: \. ( m i n ) ) ? \. j s ) / ) ,
218
239
modes = [ "svg-names" , "plus-names" ] ;
219
240
@@ -244,7 +265,7 @@ grunt.registerTask( "build-index", function() {
244
265
245
266
function getQunitData ( ) {
246
267
var files = grunt . file . expand ( "cdn/qunit/*.js" ) ,
247
- releases = parseReleases ( files ,
268
+ releases = parseStableReleases ( files ,
248
269
/ ( q u n i t \/ q u n i t - ( \d + \. \d + \. \d + [ ^ . ] * ) (?: \. ( m i n ) ) ? \. j s ) / ) ;
249
270
250
271
releases . forEach ( function ( release ) {
0 commit comments