Skip to content

Commit 5c336d2

Browse files
committed
Create Builder#build
- And move the build caching logic from jQueryUI into Builder (where it belongs);
1 parent 5f1d0e5 commit 5c336d2

File tree

8 files changed

+128
-116
lines changed

8 files changed

+128
-116
lines changed

download.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
var downloadLogger, jqueryUis,
22
_ = require( "underscore" ),
3-
Builder = require( "./lib/builder" ),
43
fs = require( "fs" ),
54
Handlebars = require( "handlebars" ),
65
JqueryUi = require( "./lib/jquery-ui" ),

lib/builder.1.10.0.js

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ stripBanner = util.stripBanner;
1515
/**
1616
* Builder 1.10
1717
*/
18-
function Builder_1_10_0( jqueryUi, components, options ) {
18+
function Builder_1_10_0( build, jqueryUi, components, options ) {
1919
var _bundleCss, baseCss, baseCssMin, cssComponentFileNames, existingCss, jsComponentFileNames, selectedDemoRe, selectedRe,
2020
files = jqueryUi.files(),
2121
min = function( file ) {
@@ -29,32 +29,29 @@ function Builder_1_10_0( jqueryUi, components, options ) {
2929
};
3030

3131
options = options || {};
32-
components = jqueryUi.expandComponents( components );
33-
3432
selectedRe = new RegExp( components.join( "|" ) );
3533

36-
this.components = components;
37-
this.files = files;
38-
this.pkg = jqueryUi.pkg;
34+
build.files = files;
35+
build.pkg = jqueryUi.pkg;
3936

40-
this.baseTheme = util.stripBanner( files.get( "themes/base/jquery.ui.theme.css" ) );
41-
this.baseThemeMin = util.stripBanner( files.min( files.get( "themes/base/jquery.ui.theme.css" ) ) );
37+
build.baseTheme = util.stripBanner( files.get( "themes/base/jquery.ui.theme.css" ) );
38+
build.baseThemeMin = util.stripBanner( files.min( files.get( "themes/base/jquery.ui.theme.css" ) ) );
4239

43-
this.commonFiles = files.commonFiles;
44-
this.componentFiles = files.componentFiles.filter( selected );
40+
build.commonFiles = files.commonFiles;
41+
build.componentFiles = files.componentFiles.filter( selected );
4542

46-
this.componentMinFiles = this.componentFiles.filter(function( file ) {
43+
build.componentMinFiles = build.componentFiles.filter(function( file ) {
4744
return (/^ui\//).test( file.path );
4845
}).map( min );
4946

50-
this.baseThemeFiles = files.baseThemeFiles;
51-
this.baseThemeMinFiles = files.baseThemeFiles.filter( selected ).map( min );
52-
this.baseThemeMinFiles.push({
47+
build.baseThemeFiles = files.baseThemeFiles;
48+
build.baseThemeMinFiles = files.baseThemeFiles.filter( selected ).map( min );
49+
build.baseThemeMinFiles.push({
5350
path: "themes/base/jquery.ui.theme.min.css",
54-
data: banner( jqueryUi.pkg, null, { minify: true } ) + this.baseCssMin
51+
data: banner( jqueryUi.pkg, null, { minify: true } ) + build.baseCssMin
5552
});
5653

57-
this.baseThemeExceptThemeOrImages = files.baseThemeFiles.filter(function( file ) {
54+
build.baseThemeExceptThemeOrImages = files.baseThemeFiles.filter(function( file ) {
5855
if ( (/jquery.ui.theme|jquery-ui|images/).test( file.path ) ) {
5956
return false;
6057
}
@@ -64,41 +61,41 @@ function Builder_1_10_0( jqueryUi, components, options ) {
6461
return selected( file );
6562
});
6663

67-
this.baseThemeImages = files.baseThemeFiles.filter(function( file ) {
64+
build.baseThemeImages = files.baseThemeFiles.filter(function( file ) {
6865
return (/images/).test( file.path );
6966
});
7067

7168
// I18n files
7269
if ( components.indexOf( "datepicker" ) >= 0 ) {
73-
this.i18nFiles = files.i18nFiles;
74-
this.i18nMinFiles = files.i18nFiles.map( min );
75-
this.bundleI18n = Files({
70+
build.i18nFiles = files.i18nFiles;
71+
build.i18nMinFiles = files.i18nFiles.map( min );
72+
build.bundleI18n = Files({
7673
path: "jquery-ui-i18n.js",
7774
data: files.i18nFiles.reduce(function( sum, file ) {
7875
return sum + stripBanner( file );
7976
}, banner( jqueryUi.pkg, files.i18nFiles.paths().map( path.basename ) ) )
8077
});
81-
this.bundleI18nMin = Files({
78+
build.bundleI18nMin = Files({
8279
path: "jquery-ui-i18n.min.js",
83-
data: banner( jqueryUi.pkg, files.i18nFiles.map( path.basename ), { minify: true }) + stripBanner( files.min( this.bundleI18n[ 0 ] ) )
80+
data: banner( jqueryUi.pkg, files.i18nFiles.map( path.basename ), { minify: true }) + stripBanner( files.min( build.bundleI18n[ 0 ] ) )
8481
});
8582
} else {
86-
this.i18nFiles = this.i18nMinFiles = this.bundleI18n = this.bundleI18nMin = Files();
83+
build.i18nFiles = build.i18nMinFiles = build.bundleI18n = build.bundleI18nMin = Files();
8784
}
8885

8986
// Bundle JS (and minified)
9087
jsComponentFileNames = components.map(function( component ) {
9188
return "jquery.ui." + component + ".js";
9289
});
93-
this.bundleJs = Files({
90+
build.bundleJs = Files({
9491
path: "jquery-ui.js",
95-
data: this.components.reduce(function( sum, component ) {
92+
data: build.components.reduce(function( sum, component ) {
9693
return sum + stripBanner( files.get( "ui/jquery.ui." + component + ".js" ) );
9794
}, banner( jqueryUi.pkg, jsComponentFileNames ) )
9895
});
99-
this.bundleJsMin = Files({
96+
build.bundleJsMin = Files({
10097
path: "jquery-ui.min.js",
101-
data: this.components.reduce(function( sum, component ) {
98+
data: build.components.reduce(function( sum, component ) {
10299
return sum + stripBanner( files.min( files.get( "ui/jquery.ui." + component + ".js" ) ) );
103100
}, banner( jqueryUi.pkg, jsComponentFileNames, { minify: true } ) )
104101
});
@@ -143,13 +140,13 @@ function Builder_1_10_0( jqueryUi, components, options ) {
143140
}
144141
return banner( jqueryUi.pkg, fileNames, options ) + bundleCss;
145142
};
146-
this.bundleCss = function( theme ) {
143+
build.bundleCss = function( theme ) {
147144
return Files({
148145
path: "jquery-ui.css",
149146
data: _bundleCss( baseCss, theme )
150147
});
151148
};
152-
this.bundleCssMin = function( theme ) {
149+
build.bundleCssMin = function( theme ) {
153150
return Files({
154151
path: "jquery-ui.min.css",
155152
data: _bundleCss( baseCssMin, theme, { minify: true } )
@@ -162,11 +159,11 @@ function Builder_1_10_0( jqueryUi, components, options ) {
162159
} else {
163160
selectedDemoRe = new RegExp( components.join( "|" ) );
164161
}
165-
this.demoFiles = files.demoFiles.filter(function( file ) {
162+
build.demoFiles = files.demoFiles.filter(function( file ) {
166163
var componentSubdir = file.path.split( "/" )[ 1 ];
167164
return selectedDemos( componentSubdir );
168165
});
169-
this.demoFiles.push({
166+
build.demoFiles.push({
170167
path: "demos/index.html",
171168
data: demoIndexTemplate({
172169
demos: files.demoSubdirs.filter( selectedDemos )
@@ -175,7 +172,7 @@ function Builder_1_10_0( jqueryUi, components, options ) {
175172

176173
// Doc files
177174
if ( files.docFiles.length ) {
178-
this.docFiles = files.docFiles.filter(function( file ) {
175+
build.docFiles = files.docFiles.filter(function( file ) {
179176
return !(/effect/).test( file.path );
180177
}).filter( selected ).concat( components.filter(function( component ) {
181178
return (/effect-/).test( component );
@@ -184,9 +181,9 @@ function Builder_1_10_0( jqueryUi, components, options ) {
184181
return files.get( path );
185182
}));
186183
if ( components.indexOf( "effect-scale" ) >= 0 ) {
187-
this.docFiles.push( files.get( "docs/puff-effect.html" ), files.get( "docs/size-effect.html" ) );
184+
build.docFiles.push( files.get( "docs/puff-effect.html" ), files.get( "docs/size-effect.html" ) );
188185
}
189-
this.docFiles = this.docFiles.map(function( file ) {
186+
build.docFiles = build.docFiles.map(function( file ) {
190187
return {
191188
path: file.path,
192189
data: docsTemplate({
@@ -198,10 +195,12 @@ function Builder_1_10_0( jqueryUi, components, options ) {
198195
}
199196

200197
// Test files
201-
this.testFiles = files.testFiles;
198+
build.testFiles = files.testFiles;
202199

203200
// Ad hoc
204-
this.jqueryCore = files.jqueryCore;
201+
build.jqueryCore = files.jqueryCore;
202+
203+
return build;
205204
}
206205

207206
module.exports = Builder_1_10_0;

lib/builder.1.11.0.js

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ path.basename = function() {
2323
/**
2424
* Builder 1.11
2525
*/
26-
function Builder_1_11_0( jqueryUi, components, options ) {
26+
function Builder_1_11_0( build, jqueryUi, components, options ) {
2727
var _bundleCss, baseCss, baseCssMin, cssComponentFileNames, docsCategories, existingCss, jsComponentFileNames, selectedDemoRe, selectedRe,
2828
files = jqueryUi.files(),
2929
min = function( file ) {
@@ -37,32 +37,29 @@ function Builder_1_11_0( jqueryUi, components, options ) {
3737
};
3838

3939
options = options || {};
40-
components = jqueryUi.expandComponents( components );
41-
4240
selectedRe = new RegExp( components.join( "|" ) );
4341

44-
this.components = components;
45-
this.files = files;
46-
this.pkg = jqueryUi.pkg;
42+
build.files = files;
43+
build.pkg = jqueryUi.pkg;
4744

48-
this.baseTheme = util.stripBanner( files.get( "themes/base/jquery.ui.theme.css" ) );
49-
this.baseThemeMin = util.stripBanner( files.min( files.get( "themes/base/jquery.ui.theme.css" ) ) );
45+
build.baseTheme = util.stripBanner( files.get( "themes/base/jquery.ui.theme.css" ) );
46+
build.baseThemeMin = util.stripBanner( files.min( files.get( "themes/base/jquery.ui.theme.css" ) ) );
5047

51-
this.commonFiles = files.commonFiles;
52-
this.componentFiles = files.componentFiles.filter( selected );
48+
build.commonFiles = files.commonFiles;
49+
build.componentFiles = files.componentFiles.filter( selected );
5350

54-
this.componentMinFiles = this.componentFiles.filter(function( file ) {
51+
build.componentMinFiles = build.componentFiles.filter(function( file ) {
5552
return (/^ui\//).test( file.path );
5653
}).map( min );
5754

58-
this.baseThemeFiles = files.baseThemeFiles;
59-
this.baseThemeMinFiles = files.baseThemeFiles.filter( selected ).map( min );
60-
this.baseThemeMinFiles.push({
55+
build.baseThemeFiles = files.baseThemeFiles;
56+
build.baseThemeMinFiles = files.baseThemeFiles.filter( selected ).map( min );
57+
build.baseThemeMinFiles.push({
6158
path: "themes/base/jquery.ui.theme.min.css",
62-
data: banner( jqueryUi.pkg, null, { minify: true } ) + this.baseCssMin
59+
data: banner( jqueryUi.pkg, null, { minify: true } ) + build.baseCssMin
6360
});
6461

65-
this.baseThemeExceptThemeOrImages = files.baseThemeFiles.filter(function( file ) {
62+
build.baseThemeExceptThemeOrImages = files.baseThemeFiles.filter(function( file ) {
6663
if ( (/jquery.ui.theme|jquery-ui|images/).test( file.path ) ) {
6764
return false;
6865
}
@@ -72,41 +69,41 @@ function Builder_1_11_0( jqueryUi, components, options ) {
7269
return selected( file );
7370
});
7471

75-
this.baseThemeImages = files.baseThemeFiles.filter(function( file ) {
72+
build.baseThemeImages = files.baseThemeFiles.filter(function( file ) {
7673
return (/images/).test( file.path );
7774
});
7875

7976
// I18n files
8077
if ( components.indexOf( "datepicker" ) >= 0 ) {
81-
this.i18nFiles = files.i18nFiles;
82-
this.i18nMinFiles = files.i18nFiles.map( min );
83-
this.bundleI18n = Files({
78+
build.i18nFiles = files.i18nFiles;
79+
build.i18nMinFiles = files.i18nFiles.map( min );
80+
build.bundleI18n = Files({
8481
path: "jquery-ui-i18n.js",
8582
data: files.i18nFiles.reduce(function( sum, file ) {
8683
return sum + stripBanner( file );
8784
}, banner( jqueryUi.pkg, files.i18nFiles.paths().map( path.basename ) ) )
8885
});
89-
this.bundleI18nMin = Files({
86+
build.bundleI18nMin = Files({
9087
path: "jquery-ui-i18n.min.js",
91-
data: banner( jqueryUi.pkg, files.i18nFiles.map( path.basename ), { minify: true }) + stripBanner( files.min( this.bundleI18n[ 0 ] ) )
88+
data: banner( jqueryUi.pkg, files.i18nFiles.map( path.basename ), { minify: true }) + stripBanner( files.min( build.bundleI18n[ 0 ] ) )
9289
});
9390
} else {
94-
this.i18nFiles = this.i18nMinFiles = this.bundleI18n = this.bundleI18nMin = Files();
91+
build.i18nFiles = build.i18nMinFiles = build.bundleI18n = build.bundleI18nMin = Files();
9592
}
9693

9794
// Bundle JS (and minified)
9895
jsComponentFileNames = components.map(function( component ) {
9996
return "jquery.ui." + component + ".js";
10097
});
101-
this.bundleJs = Files({
98+
build.bundleJs = Files({
10299
path: "jquery-ui.js",
103-
data: this.components.reduce(function( sum, component ) {
100+
data: build.components.reduce(function( sum, component ) {
104101
return sum + stripBanner( files.get( "ui/jquery.ui." + component + ".js" ) );
105102
}, banner( jqueryUi.pkg, jsComponentFileNames ) )
106103
});
107-
this.bundleJsMin = Files({
104+
build.bundleJsMin = Files({
108105
path: "jquery-ui.min.js",
109-
data: this.components.reduce(function( sum, component ) {
106+
data: build.components.reduce(function( sum, component ) {
110107
return sum + stripBanner( files.min( files.get( "ui/jquery.ui." + component + ".js" ) ) );
111108
}, banner( jqueryUi.pkg, jsComponentFileNames, { minify: true } ) )
112109
});
@@ -151,13 +148,13 @@ function Builder_1_11_0( jqueryUi, components, options ) {
151148
}
152149
return banner( jqueryUi.pkg, fileNames, options ) + bundleCss;
153150
};
154-
this.bundleCss = function( theme ) {
151+
build.bundleCss = function( theme ) {
155152
return Files({
156153
path: "jquery-ui.css",
157154
data: _bundleCss( baseCss, theme )
158155
});
159156
};
160-
this.bundleCssMin = function( theme ) {
157+
build.bundleCssMin = function( theme ) {
161158
return Files({
162159
path: "jquery-ui.min.css",
163160
data: _bundleCss( baseCssMin, theme, { minify: true } )
@@ -166,11 +163,11 @@ function Builder_1_11_0( jqueryUi, components, options ) {
166163

167164
// Demo files
168165
selectedDemoRe = new RegExp( components.join( "|" ) );
169-
this.demoFiles = files.demoFiles.filter(function( file ) {
166+
build.demoFiles = files.demoFiles.filter(function( file ) {
170167
var componentSubdir = file.path.split( "/" )[ 1 ];
171168
return selectedDemos( componentSubdir );
172169
});
173-
this.demoFiles.push({
170+
build.demoFiles.push({
174171
path: "demos/index.html",
175172
data: demoIndexTemplate({
176173
demos: files.demoSubdirs.filter( selectedDemos )
@@ -179,7 +176,7 @@ function Builder_1_11_0( jqueryUi, components, options ) {
179176

180177
// Doc files
181178
if ( files.docFiles.length ) {
182-
this.docFiles = jqueryUi.components().filter( selected ).map(function( component ) {
179+
build.docFiles = jqueryUi.components().filter( selected ).map(function( component ) {
183180
return component.docs;
184181
}).map(function( doc ) {
185182
var slug;
@@ -206,10 +203,12 @@ function Builder_1_11_0( jqueryUi, components, options ) {
206203
}
207204

208205
// Test files
209-
this.testFiles = files.testFiles;
206+
build.testFiles = files.testFiles;
210207

211208
// Ad hoc
212-
this.jqueryCore = files.jqueryCore;
209+
build.jqueryCore = files.jqueryCore;
210+
211+
return build;
213212
}
214213

215214
module.exports = Builder_1_11_0;

0 commit comments

Comments
 (0)