Skip to content

Commit 0625896

Browse files
committed
jquery: Automate jQuery version grouping
This means no additional sections will be needed to add manually when jQuery 3 comes out.
1 parent f39001e commit 0625896

File tree

2 files changed

+49
-35
lines changed

2 files changed

+49
-35
lines changed

Gruntfile.js

Lines changed: 44 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ grunt.registerTask( "build-index", function() {
5353
function parseReleases( files, regex ) {
5454
return files
5555
.map(function( filename ) {
56-
var type,
57-
matches = regex.exec( filename );
56+
var matches = regex.exec( filename );
5857

5958
// matches[ 3 ] = "min" or "pack" or ""
6059
if ( !matches || matches[ 3 ] ) {
@@ -74,17 +73,36 @@ grunt.registerTask( "build-index", function() {
7473
});
7574
}
7675

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+
77100
function getCoreData() {
78101
var files = grunt.file.expand( "cdn/*.js" ),
79-
coreReleases = parseReleases( files,
102+
coreReleases = parseStableReleases( files,
80103
/(jquery-(\d+\.\d+(?:\.\d+)?[^.]*)(?:\.(min|pack))?\.js)/ ),
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,
88106
/(jquery-migrate-(\d+\.\d+(?:\.\d+)?[^.]*)(?:\.(min))?\.js)/ );
89107

90108
function addTypes( release ) {
@@ -99,24 +117,27 @@ grunt.registerTask( "build-index", function() {
99117
}
100118
}
101119

102-
jquery1Releases.forEach( addTypes );
103-
jquery2Releases.forEach( addTypes );
120+
coreReleasesGrouped.forEach( function( group ) {
121+
group[ 1 ].forEach( addTypes );
122+
} );
104123
migrateReleases.forEach( addTypes );
105124

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: [],
115127
migrate: {
116128
latestStable: getLatestStable( migrateReleases ),
117129
all: migrateReleases
118130
}
119131
};
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;
120141
}
121142

122143
function getUiData() {
@@ -213,7 +234,7 @@ grunt.registerTask( "build-index", function() {
213234

214235
function getColorData() {
215236
var files = grunt.file.expand( "cdn/color/*.js" ),
216-
releases = parseReleases( files,
237+
releases = parseStableReleases( files,
217238
/(color\/jquery.color-(\d+\.\d+(?:\.\d+)?[^.]*)(?:\.(min))?\.js)/ ),
218239
modes = [ "svg-names", "plus-names" ];
219240

@@ -244,7 +265,7 @@ grunt.registerTask( "build-index", function() {
244265

245266
function getQunitData() {
246267
var files = grunt.file.expand( "cdn/qunit/*.js" ),
247-
releases = parseReleases( files,
268+
releases = parseStableReleases( files,
248269
/(qunit\/qunit-(\d+\.\d+\.\d+[^.]*)(?:\.(min))?\.js)/ );
249270

250271
releases.forEach(function( release ) {

templates/jquery.hbs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,16 @@
44

55
{{include "jquery-git"}}
66

7-
{{#with jquery2}}
8-
<h2 id="jquery-all-2.x">jQuery Core - All 2.x Versions</h2>
7+
{{#each jquery}}
8+
{{#if this.1.all}}
9+
<h2 id="jquery-all-[{{this.[0]}}].x">jQuery Core - All {{this.[0]}}.x Versions</h2>
910
<ul>
10-
{{#each all}}
11+
{{#each this.1.all}}
1112
<li>{{release "jQuery Core" this}}</li>
1213
{{/each}}
1314
</ul>
14-
{{/with}}
15-
16-
{{#with jquery1}}
17-
<h2 id="jquery-all-1.x">jQuery Core - All 1.x Versions</h2>
18-
<ul>
19-
{{#each all}}
20-
<li>{{release "jQuery Core" this}}</li>
15+
{{/if}}
2116
{{/each}}
22-
</ul>
23-
{{/with}}
2417

2518
{{#with migrate}}
2619
<h2 id="jquery-migrate-all">jQuery Migrate - All Versions</h2>

0 commit comments

Comments
 (0)