@@ -3,7 +3,8 @@ module.exports = function( grunt ) {
3
3
"use strict" ;
4
4
5
5
var _ = require ( "underscore" ) ,
6
- semver = require ( "semver" ) ;
6
+ semver = require ( "semver" ) ,
7
+ Handlebars = require ( "handlebars" ) ;
7
8
8
9
grunt . loadNpmTasks ( "grunt-clean" ) ;
9
10
grunt . loadNpmTasks ( "grunt-html" ) ;
@@ -101,21 +102,6 @@ function parseFiles( files, regex ) {
101
102
. sort ( sortVersion ) ;
102
103
}
103
104
104
- function listItem ( prefix , version , files ) {
105
- var li = "<li>" + prefix + " " + version + " - " ;
106
-
107
- Object . keys ( files ) . forEach ( function ( type , index ) {
108
- if ( index ) {
109
- li += " or " ;
110
- }
111
-
112
- li += "<a href='/" + files [ type ] . filename + "'>" + type + "</a> " ;
113
- } ) ;
114
- li += "</li>" ;
115
-
116
- return li ;
117
- }
118
-
119
105
function getLatestStable ( organized ) {
120
106
return _ . find ( Object . keys ( organized ) , function ( version ) {
121
107
return version . indexOf ( "-" ) === - 1 ;
@@ -125,8 +111,7 @@ function getLatestStable( organized ) {
125
111
var rjQueryVersion = / ( j q u e r y - ( \d + \. \d + (?: \. \d + ) ? [ ^ . ] * ) (?: \. ( m i n | p a c k ) ) ? \. j s ) / ;
126
112
var rjQueryMigrateVersion = / ( j q u e r y - m i g r a t e - ( \d + \. \d + (?: \. \d + ) ? [ ^ . ] * ) (?: \. m i n ) ? \. j s ) / ;
127
113
grunt . registerTask ( "build-index" , function ( ) {
128
- var mainIndex , projectIndex , latestStable , gitListing ,
129
- files = grunt . file . expandFiles ( "cdn/**.js" ) ,
114
+ var files = grunt . file . expandFiles ( "cdn/**.js" ) ,
130
115
jQueryCoreFiles = parseFiles ( files , rjQueryVersion ) ,
131
116
jQueryMigrateFiles = parseFiles ( files , rjQueryMigrateVersion ) ,
132
117
jQuery2 = organize ( jQueryCoreFiles . filter ( function ( match ) {
@@ -135,68 +120,55 @@ grunt.registerTask( "build-index", function() {
135
120
jQuery1 = organize ( jQueryCoreFiles . filter ( function ( match ) {
136
121
return semver . satisfies ( match . version , "1.x" ) ;
137
122
} ) ) ,
138
- jQueryMigrate = organize ( jQueryMigrateFiles ) ;
139
-
140
- mainIndex = "<script>{\"title\":\"jQuery CDN - Latest Versions\"}</script>\n" ;
141
- mainIndex += "<h2>jQuery Core</h2>" ;
142
- mainIndex += "<p>Showing the latest release in each major branch. <a href='/jquery/'>See all versions of jQuery Core</a>.</p>" ;
143
-
144
- latestStable = getLatestStable ( jQuery2 ) ;
145
- mainIndex += "<h3>jQuery 2.x - Latest Version (IE<9 not supported)</h3>" ;
146
- mainIndex += "<ul>" ;
147
- mainIndex += listItem ( "jQuery Core" , latestStable , jQuery2 [ latestStable ] ) ;
148
- mainIndex += "</ul>" ;
149
-
150
- latestStable = getLatestStable ( jQuery1 ) ;
151
- mainIndex += "<h3>jQuery 1.x - Latest Version</h3>" ;
152
- mainIndex += "<ul>" ;
153
- mainIndex += listItem ( "jQuery Core" , latestStable , jQuery1 [ latestStable ] ) ;
154
- mainIndex += "</ul>" ;
155
-
156
- gitListing = "<h3>jQuery - Live git versions</h3>" ;
157
- gitListing += "<p>UNSTABLE, NOT FOR PRODUCTION</p>" ;
158
- gitListing += "<ul>" ;
159
- gitListing += "<li><a href='/jquery-git2.js'>jQuery 2.x git build</a> - <a href='/jquery-git2.min.js'>minified</a></li>" ;
160
- gitListing += "<li><a href='/jquery-git1.js'>jQuery 1.x git build</a> - <a href='/jquery-git1.min.js'>minified</a></li>" ;
161
- gitListing += "<li><a href='/jquery-migrate-git.js'>jQuery Migrate git build</a> - <a href='/jquery-migrate-git.min.js'>minified</a></li>" ;
162
- gitListing += "</ul>" ;
163
-
164
- mainIndex += gitListing ;
165
-
166
- latestStable = getLatestStable ( jQueryMigrate ) ;
167
- mainIndex += "<h3>jQuery Migrate - Latest Version</h3>" ;
168
- mainIndex += "<ul>" ;
169
- mainIndex += listItem ( "jQuery Migrate" , latestStable , jQueryMigrate [ latestStable ] ) ;
170
- mainIndex += "</ul>" ;
171
-
172
-
173
- // Build /jquery/
174
- projectIndex = "<script>{\"title\":\"jQuery Core - All Versions\"}</script>\n" ;
175
- projectIndex += gitListing ;
176
-
177
- projectIndex += "<h2>jQuery Core - All 2.x Versions</h2>" ;
178
- projectIndex += "<ul>" ;
179
- Object . keys ( jQuery2 ) . forEach ( function ( version ) {
180
- projectIndex += listItem ( "jQuery Core" , version , jQuery2 [ version ] ) ;
181
- } ) ;
182
- projectIndex += "</ul>" ;
123
+ jQueryMigrate = organize ( jQueryMigrateFiles ) ,
124
+ data = {
125
+ jquery2 : {
126
+ latestStable : jQuery2 [ getLatestStable ( jQuery2 ) ] ,
127
+ all : jQuery2
128
+ } ,
129
+ jquery1 : {
130
+ latestStable : jQuery1 [ getLatestStable ( jQuery1 ) ] ,
131
+ all : jQuery1
132
+ } ,
133
+ migrate : {
134
+ latestStable : jQueryMigrate [ getLatestStable ( jQueryMigrate ) ] ,
135
+ all : jQueryMigrate
136
+ }
137
+ } ;
138
+
139
+ Handlebars . registerHelper ( "listItem" , function ( prefix , files ) {
140
+ var li = "<li>" ;
141
+ Object . keys ( files ) . forEach ( function ( type , index ) {
142
+ if ( ! index ) {
143
+ li += prefix + " " + files [ type ] . version + " - " ;
144
+ } else {
145
+ li += " or " ;
146
+ }
183
147
184
- projectIndex += "<h2>jQuery Core - All 1.x Versions</h2>" ;
185
- projectIndex += "<ul>" ;
186
- Object . keys ( jQuery1 ) . forEach ( function ( version ) {
187
- projectIndex += listItem ( "jQuery Core" , version , jQuery1 [ version ] ) ;
188
- } ) ;
189
- projectIndex += "</ul>" ;
148
+ li += "<a href='/" + files [ type ] . filename + "'>" + type + "</a> " ;
149
+ } ) ;
150
+ li += "</li>" ;
190
151
191
- projectIndex += "<h2>jQuery Migrate - All Versions</h2>" ;
192
- projectIndex += "<ul>" ;
193
- Object . keys ( jQueryMigrate ) . forEach ( function ( version ) {
194
- projectIndex += listItem ( "jQuery Migrate" , version , jQueryMigrate [ version ] ) ;
152
+ return new Handlebars . SafeString ( li ) ;
195
153
} ) ;
196
- projectIndex += "</ul>" ;
197
- grunt . file . write ( "dist/wordpress/posts/page/jquery.html" , projectIndex ) ;
198
154
199
- grunt . file . write ( "dist/wordpress/posts/page/index.html" , mainIndex ) ;
155
+ Handlebars . registerHelper ( "include" , ( function ( ) {
156
+ var templates = { } ;
157
+ return function ( template ) {
158
+ if ( ! templates . hasOwnProperty ( template ) ) {
159
+ templates [ template ] = Handlebars . compile (
160
+ grunt . file . read ( "templates/" + template + ".hbs" ) ) ;
161
+ }
162
+
163
+ return new Handlebars . SafeString ( templates [ template ] ( ) ) ;
164
+ } ;
165
+ } ) ( ) ) ;
166
+
167
+ grunt . file . write ( "dist/wordpress/posts/page/index.html" ,
168
+ Handlebars . compile ( grunt . file . read ( "templates/index.hbs" ) ) ( data ) ) ;
169
+
170
+ grunt . file . write ( "dist/wordpress/posts/page/jquery.html" ,
171
+ Handlebars . compile ( grunt . file . read ( "templates/jquery.hbs" ) ) ( data ) ) ;
200
172
} ) ;
201
173
202
174
} ;
0 commit comments