Changeset 10325

Show
Ignore:
Timestamp:
08/21/07 11:47:11 (23 months ago)
Author:
jburke
Message:

Fixes #4246. Allow nested layer files that have flattened i18n bundles.

Location:
util/trunk/buildscripts
Files:
6 added
2 modified

Legend:

Unmodified
Added
Removed
  • util/trunk/buildscripts/build.js

    r10230 r10325  
    192192        var defaultLegalText = copyrightText + buildNoticeText; 
    193193        var dojoReleaseDir = kwArgs.releaseDir + "/dojo/"; 
    194         var optimizeIgnoreString = ""; 
     194        var layerIgnoreString = ""; 
     195        var nlsIgnoreString = ""; 
    195196        for(var i = 0; i < result.length; i++){ 
    196197                var currentLayer = result[i]; 
     
    202203                //Build up string of files to ignore for the directory optimization step 
    203204                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); 
    206213                 
    207214                //Burn in xd path for dojo if requested, and only do this in dojo.xd.js. 
     
    257264        //Run string interning, xd file building, etc.. on the prefix dirs in the 
    258265        //release area. 
    259         var ignoreRegExp = new RegExp("(" + optimizeIgnoreString + ")"); 
     266        var layerIgnoreRegExp = new RegExp("(" + layerIgnoreString + ")\.js$"); 
     267        var nlsIgnoreRegExp = new RegExp("\\/nls\\/(" + nlsIgnoreString + ")_"); 
    260268        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); 
    262270        } 
    263271         
     
    299307        /*String*/prefixPath,  
    300308        /*Object*/kwArgs, 
    301         /*RegExp*/optimizeIgnoreRegExp){ 
     309        /*RegExp*/layerIgnoreRegExp, 
     310        /*RegExp*/nlsIgnoreRegExp){      
    302311        //summary: runs intern strings, i18n bundle flattening and xdomain file generation 
    303312        //on the files in a release directory, if those options are enabled. 
     
    308317        if(kwArgs.internStrings){ 
    309318                logger.info("Interning strings for: " + releasePath); 
    310                 buildUtil.internTemplateStrings(kwArgs.profileProperties.dependencies, releasePath, optimizeIgnoreRegExp); 
     319                buildUtil.internTemplateStrings(kwArgs.profileProperties.dependencies, releasePath, layerIgnoreRegExp); 
    311320        } 
    312321 
    313322        //Flatten bundles inside the directory 
    314         i18nUtil.flattenDirBundles(prefixName, prefixPath, kwArgs); 
     323        i18nUtil.flattenDirBundles(prefixName, prefixPath, kwArgs, nlsIgnoreRegExp); 
    315324 
    316325        if(kwArgs.loader == "xdomain"){ 
    317                 buildUtilXd.xdgen(prefixName, prefixPath, prefixes, optimizeIgnoreRegExp); 
     326                buildUtilXd.xdgen(prefixName, prefixPath, prefixes, layerIgnoreRegExp); 
    318327        } 
    319328 
    320329        //FIXME: call stripComments. Maybe rename, inline with optimize? need build options too. 
    321330        if(kwArgs.optimize){ 
    322                 buildUtil.stripComments(releasePath, optimizeIgnoreRegExp, false, kwArgs.optimize); 
     331                buildUtil.stripComments(releasePath, layerIgnoreRegExp, false, kwArgs.optimize); 
    323332        } 
    324333         
  • util/trunk/buildscripts/jslib/i18nUtil.js

    r10063 r10325  
    131131} 
    132132 
    133 i18nUtil.flattenDirBundles = function(/*String*/prefixName, /*String*/prefixDir, /*Object*/kwArgs){ 
     133i18nUtil.flattenDirBundles = function(/*String*/prefixName, /*String*/prefixDir, /*Object*/kwArgs, /*RegExp*/nlsIgnoreRegExp){ 
    134134        //summary: Flattens the i18n bundles inside a directory so that only request 
    135135        //is needed per bundle. Does not handle resource flattening for dojo.js or 
     
    144144                var fileContents = null; 
    145145                 
    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)){ 
    149148                        fileContents = "(" + i18nUtil.makeFlatBundleContents(prefixName, prefixDir, jsFileName) + ")";                   
    150149                }else{