@@ -3,7 +3,8 @@ module.exports = function( grunt ) {
33"use strict" ;
44
55var _ = require ( "underscore" ) ,
6- semver = require ( "semver" ) ;
6+ semver = require ( "semver" ) ,
7+ Handlebars = require ( "handlebars" ) ;
78
89grunt . loadNpmTasks ( "grunt-clean" ) ;
910grunt . loadNpmTasks ( "grunt-html" ) ;
@@ -101,21 +102,6 @@ function parseFiles( files, regex ) {
101102 . sort ( sortVersion ) ;
102103}
103104
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-
119105function getLatestStable ( organized ) {
120106 return _ . find ( Object . keys ( organized ) , function ( version ) {
121107 return version . indexOf ( "-" ) === - 1 ;
@@ -125,8 +111,7 @@ function getLatestStable( organized ) {
125111var rjQueryVersion = / ( j q u e r y - ( \d + \. \d + (?: \. \d + ) ? [ ^ . ] * ) (?: \. ( m i n | p a c k ) ) ? \. j s ) / ;
126112var rjQueryMigrateVersion = / ( j q u e r y - m i g r a t e - ( \d + \. \d + (?: \. \d + ) ? [ ^ . ] * ) (?: \. m i n ) ? \. j s ) / ;
127113grunt . 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" ) ,
130115 jQueryCoreFiles = parseFiles ( files , rjQueryVersion ) ,
131116 jQueryMigrateFiles = parseFiles ( files , rjQueryMigrateVersion ) ,
132117 jQuery2 = organize ( jQueryCoreFiles . filter ( function ( match ) {
@@ -135,68 +120,55 @@ grunt.registerTask( "build-index", function() {
135120 jQuery1 = organize ( jQueryCoreFiles . filter ( function ( match ) {
136121 return semver . satisfies ( match . version , "1.x" ) ;
137122 } ) ) ,
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+ }
183147
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>" ;
190151
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 ) ;
195153 } ) ;
196- projectIndex += "</ul>" ;
197- grunt . file . write ( "dist/wordpress/posts/page/jquery.html" , projectIndex ) ;
198154
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 ) ) ;
200172} ) ;
201173
202174} ;
0 commit comments