mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
|
|
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);
|
|
}
|
|
|
|
};
|
|
|