@translation-summary/core
Version:
View a summary of missing translation files into a folder
51 lines (50 loc) • 2.46 kB
JavaScript
;
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TranslationSummary = void 0;
var file_helper_1 = require("./file.helper");
var options_1 = require("./options");
var TranslationSummary = /** @class */ (function () {
function TranslationSummary(options) {
if (options === void 0) { options = new options_1.Options(); }
this.options = options;
}
TranslationSummary.prototype.searchLanguages = function (files) {
var _this = this;
var regex = new RegExp(this.options.filePattern);
var data = files.filter(function (f) { return regex.test(f); }).map(function (f) { return _this.options.extractLanguage(f); });
return __spreadArrays(Array.from(new Set(data)));
};
TranslationSummary.prototype.fileSummary = function (files, file, languages) {
var _this = this;
var langs = languages.map(function (lang) {
var _a;
var includes = files.includes(_this.options.replaceExtension(file, lang, _this.options.filePatternForReplace, _this.options.fileExtension));
return _a = {},
_a[lang] = includes ? 'exists' : 'missing translation',
_a;
});
return Object.assign.apply(Object, __spreadArrays([{ file: file }], langs));
};
TranslationSummary.prototype.getNativeFiles = function (files) {
var regex = new RegExp(this.options.filePattern);
return files.filter(function (f) { return !regex.test(f); });
};
TranslationSummary.prototype.getSummary = function () {
var _this = this;
var fileHelper = new file_helper_1.FileHelper(this.options);
var files = fileHelper.getFileNames(this.options.folderPath);
var languages = this.searchLanguages(files);
var nativeFiles = this.getNativeFiles(files);
var result = nativeFiles.map(function (file) { return _this.fileSummary(files, file, languages); });
return result;
};
return TranslationSummary;
}());
exports.TranslationSummary = TranslationSummary;