fxa-content-server/grunttasks/l10n-htmllint.js

56 строки
1.7 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
var path = require('path');
// Four steps are performed to lint the files:
// 1. Clean the directories
// 2. Generate the JSON files from the PO files
// 3. The JSON files are then written out to temporary HTML files
// 4. The HTML files are linted
module.exports = function (grunt) {
grunt.registerTask('l10n-htmllint', 'Lint l10n files', [
// grunt addition for htmllint
'clean',
'selectconfig:dist',
'l10n-generate-pages',
'l10n-json-to-html',
'htmllint:l10n'
]);
grunt.registerMultiTask('l10n-json-to-html', 'Convert l10n JSON files to HTML', function () {
this.files.forEach(function (file) {
var content = '';
var src = file.src[0];
var pathname = src.split('/');
var locale = grunt.file.readJSON(src);
for (var val in locale) {
var value = locale[val];
if (typeof value !== 'object' && value !== '' && isNaN(value)) {
content += value.toString() + '\n\n';
}
}
if (content !== '') {
var tmpDir = grunt.config.get('yeoman.tmp');
grunt.file.write(path.join(tmpDir, pathname[1], pathname[2], pathname[3].replace('json', 'html')), content);
}
});
grunt.log.ok(this.files.length + ' file(s) converted from JSON to HTML');
});
grunt.config('l10n-json-to-html', {
dist: {
files: [
{
expand: true,
src: [
'<%= yeoman.app %>/i18n/*/*.json'
]
}
]
}
});
};