Changeset 10325
- Timestamp:
- 08/21/07 11:47:11 (23 months ago)
- Location:
- util/trunk/buildscripts
- Files:
-
- 6 added
- 2 modified
-
build.js (modified) (5 diffs)
-
jslib/i18nUtil.js (modified) (2 diffs)
-
tests (added)
-
tests/foo (added)
-
tests/foo/page (added)
-
tests/foo/page/view.js (added)
-
tests/profiles (added)
-
tests/profiles/nestedNls.profile.js (added)
Legend:
- Unmodified
- Added
- Removed
-
util/trunk/buildscripts/build.js
r10230 r10325 192 192 var defaultLegalText = copyrightText + buildNoticeText; 193 193 var dojoReleaseDir = kwArgs.releaseDir + "/dojo/"; 194 var optimizeIgnoreString = ""; 194 var layerIgnoreString = ""; 195 var nlsIgnoreString = ""; 195 196 for(var i = 0; i < result.length; i++){ 196 197 var currentLayer = result[i]; … … 202 203 //Build up string of files to ignore for the directory optimization step 203 204 var ignoreName = layerName.replace(/\.\.\//g, ""); 204 optimizeIgnoreString += (optimizeIgnoreString ? "|" : "") + buildUtil.regExpEscape(ignoreName) + "$"; 205 optimizeIgnoreString += "|" + buildUtil.regExpEscape(ignoreName + ".uncompressed.js") + "$"; 205 var nameSegment = ignoreName.replace(/\.js$/, ""); 206 layerIgnoreString += (layerIgnoreString ? "|" : "") + buildUtil.regExpEscape(ignoreName); 207 layerIgnoreString += "|" + buildUtil.regExpEscape(ignoreName + ".uncompressed"); 208 209 if(nameSegment.indexOf("/") != -1){ 210 nameSegment = nameSegment.substring(nameSegment.lastIndexOf("/") + 1, nameSegment.length); 211 } 212 nlsIgnoreString += (nlsIgnoreString ? "|" : "") + buildUtil.regExpEscape(nameSegment); 206 213 207 214 //Burn in xd path for dojo if requested, and only do this in dojo.xd.js. … … 257 264 //Run string interning, xd file building, etc.. on the prefix dirs in the 258 265 //release area. 259 var ignoreRegExp = new RegExp("(" + optimizeIgnoreString + ")"); 266 var layerIgnoreRegExp = new RegExp("(" + layerIgnoreString + ")\.js$"); 267 var nlsIgnoreRegExp = new RegExp("\\/nls\\/(" + nlsIgnoreString + ")_"); 260 268 for(var i = 0; i < prefixes.length; i++){ 261 _optimizeReleaseDirs(prefixes[i][0], prefixes[i][1], kwArgs, ignoreRegExp);269 _optimizeReleaseDirs(prefixes[i][0], prefixes[i][1], kwArgs, layerIgnoreRegExp, nlsIgnoreRegExp); 262 270 } 263 271 … … 299 307 /*String*/prefixPath, 300 308 /*Object*/kwArgs, 301 /*RegExp*/optimizeIgnoreRegExp){ 309 /*RegExp*/layerIgnoreRegExp, 310 /*RegExp*/nlsIgnoreRegExp){ 302 311 //summary: runs intern strings, i18n bundle flattening and xdomain file generation 303 312 //on the files in a release directory, if those options are enabled. … … 308 317 if(kwArgs.internStrings){ 309 318 logger.info("Interning strings for: " + releasePath); 310 buildUtil.internTemplateStrings(kwArgs.profileProperties.dependencies, releasePath, optimizeIgnoreRegExp);319 buildUtil.internTemplateStrings(kwArgs.profileProperties.dependencies, releasePath, layerIgnoreRegExp); 311 320 } 312 321 313 322 //Flatten bundles inside the directory 314 i18nUtil.flattenDirBundles(prefixName, prefixPath, kwArgs );323 i18nUtil.flattenDirBundles(prefixName, prefixPath, kwArgs, nlsIgnoreRegExp); 315 324 316 325 if(kwArgs.loader == "xdomain"){ 317 buildUtilXd.xdgen(prefixName, prefixPath, prefixes, optimizeIgnoreRegExp);326 buildUtilXd.xdgen(prefixName, prefixPath, prefixes, layerIgnoreRegExp); 318 327 } 319 328 320 329 //FIXME: call stripComments. Maybe rename, inline with optimize? need build options too. 321 330 if(kwArgs.optimize){ 322 buildUtil.stripComments(releasePath, optimizeIgnoreRegExp, false, kwArgs.optimize);331 buildUtil.stripComments(releasePath, layerIgnoreRegExp, false, kwArgs.optimize); 323 332 } 324 333 -
util/trunk/buildscripts/jslib/i18nUtil.js
r10063 r10325 131 131 } 132 132 133 i18nUtil.flattenDirBundles = function(/*String*/prefixName, /*String*/prefixDir, /*Object*/kwArgs ){133 i18nUtil.flattenDirBundles = function(/*String*/prefixName, /*String*/prefixDir, /*Object*/kwArgs, /*RegExp*/nlsIgnoreRegExp){ 134 134 //summary: Flattens the i18n bundles inside a directory so that only request 135 135 //is needed per bundle. Does not handle resource flattening for dojo.js or … … 144 144 var fileContents = null; 145 145 146 //Files in nls directories (except for the top level one in Dojo that has multiple 147 //bundles flattened) need to have special xd contents. 148 if(jsFileName.match(/\/nls\//) && jsFileName.indexOf(prefixDir + "/nls/") == -1){ 146 //Files in nls directories, except for layer bundles that already have been processed. 147 if(jsFileName.match(/\/nls\//) && !jsFileName.match(nlsIgnoreRegExp)){ 149 148 fileContents = "(" + i18nUtil.makeFlatBundleContents(prefixName, prefixDir, jsFileName) + ")"; 150 149 }else{