48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
			Vendored
		
	
	
	
| 
 | |
| module.exports = function (grunt) {
 | |
|     grunt.registerTask('embedLocales', function () {
 | |
|         var config = grunt.config('embedLocales');
 | |
| 
 | |
|         var files = grunt.file.expand(config.targetLocales);
 | |
|         var embeddedContents = determineEmbeddedContent(files);
 | |
| 
 | |
|         var momentContents = grunt.file.read(config.moment);
 | |
|         var modifiedContents = momentContents.replace('/* EMBED_LOCALES */', function () {
 | |
|             // If we don't do this, $ symbols in locale files may get interpreted in
 | |
|             // the regex replacement
 | |
|             return embeddedContents;
 | |
|         });
 | |
| 
 | |
|         grunt.file.write(config.dest, modifiedContents);
 | |
|     });
 | |
| 
 | |
|     var languageReset = 'moment.locale(\'en\');';
 | |
| 
 | |
|     function determineEmbeddedContent(files) {
 | |
|         var embeddedContent = '';
 | |
|         files.forEach(function (file) {
 | |
|             embeddedContent += transformFile(file);
 | |
|         });
 | |
|         embeddedContent += '\n    ' + languageReset + '\n';
 | |
|         return embeddedContent;
 | |
|     }
 | |
| 
 | |
|     var reTransform = /function \(factory\) \{[^]*\}(?=\(function \(moment\) \{)/gm;
 | |
|     var replaceWith =
 | |
|         'function (factory) {\n' +
 | |
|         '    factory(moment);\n' +
 | |
|         '}';
 | |
| 
 | |
|     function transformFile(file) {
 | |
|         var fileContents = grunt.file.read(file);
 | |
| 
 | |
|         if (!fileContents.match(reTransform)) {
 | |
|             grunt.warn('Warning: all locale files must use the common UMD wrapper pattern. Failed locale file: ' + file);
 | |
|             return '';
 | |
|         }
 | |
| 
 | |
|         return fileContents.replace(reTransform, replaceWith);
 | |
|     }
 | |
| };
 | |
| 
 | 
