Skip to content

Instantly share code, notes, and snippets.

@d48
Last active August 29, 2015 14:08
Show Gist options
  • Save d48/f163e6508ca5d2883984 to your computer and use it in GitHub Desktop.
Save d48/f163e6508ca5d2883984 to your computer and use it in GitHub Desktop.
Creating bundles for culture files via Node.js
// get native file system object
var fs = require('fs')
// get a template
, template = fs.readFileSync('./template.txt', 'utf8')
// read files from a directory called '/cultures' for file names, specifically language tag, e.g., 'en-US' or 'fr-FR'
, filesInDir = fs.readdirSync('./cultures/')
// create file handle to output to
, stream = fs.createWriteStream('./bundles.txt')
, tempBundle
, value
, reg
;
stream.once('open', function(fd) {
// iterate through each file found in the directory
filesInDir.map(function(val, key) {
// extract just the language tag from file, .e.g 'atlas.culture.en-US.js', just gets 'en-US'
value = val.replace('atlas.culture.','').replace('.js','');
// replace string 'languageTag'
reg = new RegExp("languageTag", "g")
// with value
tempBundle = template.replace(reg, value);
// output to file
stream.write(tempBundle);
});
stream.end();
});
<ScriptBundle>
<VirtualPath>~/bundles/libs/atlas/cultures/languageTag/js</VirtualPath>
<FilePath>\assets\global\libs\atlas\js\cultures\atlas.culture.languageTag.js</FilePath>
<Includes>
<Include>
<VirtualPath>~/assets/global/libs/atlas/js/cultures/atlas.culture.languageTag.js</VirtualPath>
</Include>
</Includes>
</ScriptBundle>
// sample ScriptBundle block, but 385 of these for each culture file
<ScriptBundle>
<VirtualPath>~/bundles/libs/atlas/cultures/af-ZA/js</VirtualPath>
<FilePath>\assets\global\libs\atlas\js\cultures\atlas.culture.af-ZA.js</FilePath>
<Includes>
<Include>
<VirtualPath>~/assets/global/libs/atlas/js/cultures/atlas.culture.af-ZA.js</VirtualPath>
</Include>
</Includes>
</ScriptBundle>
<ScriptBundle>
<VirtualPath>~/bundles/libs/atlas/cultures/af/js</VirtualPath>
<FilePath>\assets\global\libs\atlas\js\cultures\atlas.culture.af.js</FilePath>
<Includes>
<Include>
<VirtualPath>~/assets/global/libs/atlas/js/cultures/atlas.culture.af.js</VirtualPath>
</Include>
</Includes>
</ScriptBundle>
@d48
Copy link
Author

d48 commented Oct 30, 2014

Where culture directory looks like this for 385 files:

...
atlas.culture.tg-Cyrl-TJ.js
atlas.culture.tg-Cyrl.js
atlas.culture.tg.js
atlas.culture.th-TH.js
atlas.culture.th.js
atlas.culture.tk-TM.js
atlas.culture.tk.js
atlas.culture.tn-ZA.js
atlas.culture.tn.js
atlas.culture.tr-TR.js
atlas.culture.tr.js
atlas.culture.tt-RU.js
atlas.culture.tt.js
atlas.culture.tzm-Latn-DZ.js
atlas.culture.tzm-Latn.js
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment