Skip to content

Commit 4be61df

Browse files
committed
Relates to requirejs#303: put all the Java work in the rhino/optimize.js file, to do that the optimize public method signatures changed to pass in outFileName
1 parent 4eddcd3 commit 4be61df

File tree

3 files changed

+58
-56
lines changed

3 files changed

+58
-56
lines changed

build/jslib/build.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ define(function (require) {
498498
if (fileName === 'FUNCTION') {
499499
config.modules[0]._buildText = optimize.js(fileName,
500500
config.modules[0]._buildText,
501+
null,
501502
config);
502503
} else {
503504
optimize.jsFile(fileName, null, fileName, config);

build/jslib/optimize.js

Lines changed: 16 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -161,25 +161,6 @@ function (lang, logger, envOptimize, file, parse,
161161
};
162162
}
163163

164-
function getFileWriter(fileName, encoding) {
165-
var outFile = new java.io.File(fileName), outWriter, parentDir;
166-
167-
parentDir = outFile.getAbsoluteFile().getParentFile();
168-
if (!parentDir.exists()) {
169-
if (!parentDir.mkdirs()) {
170-
throw "Could not create directory: " + parentDir.getAbsolutePath();
171-
}
172-
}
173-
174-
if (encoding) {
175-
outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile), encoding);
176-
} else {
177-
outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile));
178-
}
179-
180-
return new java.io.BufferedWriter(outWriter);
181-
}
182-
183164
optimize = {
184165
/**
185166
* Optimizes a file that contains JavaScript content. Optionally collects
@@ -196,29 +177,13 @@ function (lang, logger, envOptimize, file, parse,
196177
* found.
197178
*/
198179
jsFile: function (fileName, fileContents, outFileName, config, pluginCollector) {
199-
var optimized, compressed, baseName, writer;
200-
201180
if (!fileContents) {
202181
fileContents = file.readFile(fileName);
203182
}
204183

205-
optimized = optimize.js(fileName, fileContents, config, pluginCollector);
206-
207-
compressed = typeof optimized =='string' ? optimized : optimized.toSource();
208-
209-
if (config.generateSourceMaps && optimized.sourceMap) {
210-
baseName = (new java.io.File(outFileName)).getName();
184+
fileContents = optimize.js(fileName, fileContents, outFileName, config, pluginCollector);
211185

212-
file.saveUtf8File(outFileName + ".src", fileContents);
213-
214-
writer = getFileWriter(outFileName + ".map", "utf-8");
215-
optimized.sourceMap.appendTo(writer, outFileName);
216-
writer.close();
217-
218-
compressed += "\n//@ sourceMappingURL=" + baseName + ".map";
219-
}
220-
221-
file.saveUtf8File(outFileName, compressed);
186+
file.saveUtf8File(outFileName, fileContents);
222187
},
223188

224189
/**
@@ -233,12 +198,12 @@ function (lang, logger, envOptimize, file, parse,
233198
* @param {Array} [pluginCollector] storage for any plugin resources
234199
* found.
235200
*/
236-
js: function (fileName, fileContents, config, pluginCollector) {
237-
var parts = (String(config.optimize)).split('.'),
201+
js: function (fileName, fileContents, outFileName, config, pluginCollector) {
202+
var optFunc, optConfig,
203+
parts = (String(config.optimize)).split('.'),
238204
optimizerName = parts[0],
239205
keepLines = parts[1] === 'keepLines',
240-
licenseContents = '',
241-
optFunc, optResult;
206+
licenseContents = '';
242207

243208
config = config || {};
244209

@@ -254,6 +219,11 @@ function (lang, logger, envOptimize, file, parse,
254219
'" not found for this environment');
255220
}
256221

222+
optConfig = config[optimizerName] || {}
223+
if (config.generateSourceMaps) {
224+
optConfig.generateSourceMaps = !!config.generateSourceMaps;
225+
}
226+
257227
if (config.preserveLicenseComments) {
258228
//Pull out any license comments for prepending after optimization.
259229
try {
@@ -263,13 +233,11 @@ function (lang, logger, envOptimize, file, parse,
263233
}
264234
}
265235

266-
config[optimizerName] = config[optimizerName] || {};
267-
268-
config[optimizerName].generateSourceMaps = !!config.generateSourceMaps;
269-
270-
optResult = optFunc(fileName, fileContents, keepLines, config[optimizerName]);
271-
272-
return config.generateSourceMaps ? optResult : licenseContents + (typeof optResult == 'string' ? optResult : optResult.toSource());
236+
fileContents = licenseContents + optFunc(fileName,
237+
fileContents,
238+
outFileName,
239+
keepLines,
240+
optConfig);
273241
}
274242

275243
return fileContents;

build/jslib/rhino/optimize.js

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
* see: http://github.com/jrburke/requirejs for details
55
*/
66

7-
/*jslint strict: false, plusplus: false */
8-
/*global define: false, java: false, Packages: false */
7+
/*jslint sloppy: true, plusplus: true */
8+
/*global define, java, Packages, com */
99

1010
define(['logger', 'env!env/file'], function (logger, file) {
1111

@@ -52,18 +52,38 @@ define(['logger', 'env!env/file'], function (logger, file) {
5252
return JSSourceFilefromCode.invoke(null, [filename, content]);
5353
}
5454

55+
56+
function getFileWriter(fileName, encoding) {
57+
var outFile = new java.io.File(fileName), outWriter, parentDir;
58+
59+
parentDir = outFile.getAbsoluteFile().getParentFile();
60+
if (!parentDir.exists()) {
61+
if (!parentDir.mkdirs()) {
62+
throw "Could not create directory: " + parentDir.getAbsolutePath();
63+
}
64+
}
65+
66+
if (encoding) {
67+
outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile), encoding);
68+
} else {
69+
outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile));
70+
}
71+
72+
return new java.io.BufferedWriter(outWriter);
73+
}
74+
5575
optimize = {
56-
closure: function (fileName, fileContents, keepLines, config) {
76+
closure: function (fileName, fileContents, outFileName, keepLines, config) {
5777
config = config || {};
58-
var jscomp = Packages.com.google.javascript.jscomp,
78+
var result, mappings, optimized, compressed, baseName, writer,
79+
jscomp = Packages.com.google.javascript.jscomp,
5980
flags = Packages.com.google.common.flags,
6081
//Fake extern
6182
externSourceFile = closurefromCode("fakeextern.js", " "),
6283
//Set up source input
6384
jsSourceFile = closurefromCode(String(fileName), String(fileContents)),
6485
options, option, FLAG_compilation_level, compiler,
65-
Compiler = Packages.com.google.javascript.jscomp.Compiler,
66-
result, mappings, baseName;
86+
Compiler = Packages.com.google.javascript.jscomp.Compiler;
6787

6888
logger.trace("Minifying file: " + fileName);
6989

@@ -97,9 +117,22 @@ define(['logger', 'env!env/file'], function (logger, file) {
97117

98118
result = compiler.compile(externSourceFile, jsSourceFile, options);
99119
if (result.success) {
100-
fileContents = String(compiler.toSource());
120+
optimized = String(compiler.toSource());
121+
122+
if (config.generateSourceMaps && result.sourceMap && outFileName) {
123+
baseName = (new java.io.File(outFileName)).getName();
101124

102-
return config.generateSourceMaps ? {sourceMap: result.sourceMap, toSource: function() { return fileContents; }} : fileContents;
125+
file.saveUtf8File(outFileName + ".src", fileContents);
126+
127+
writer = getFileWriter(outFileName + ".map", "utf-8");
128+
result.sourceMap.appendTo(writer, outFileName);
129+
writer.close();
130+
131+
fileContents = optimized + "\n//@ sourceMappingURL=" + baseName + ".map";
132+
} else {
133+
fileContents = optimized;
134+
}
135+
return fileContents;
103136
} else {
104137
logger.error('Cannot closure compile file: ' + fileName + '. Skipping it.');
105138
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy