Repository URL to install this package:
|
Version:
5.0.0-rc.11 ▾
|
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
/**
* Compare translation files
*
* @module @doodle/i18n/disty/onesky/diff
*/
/**
* Return an array containing an array of new keys based on the difference between source and OneSky base translation
*
* @param {object} sourceMessages hierarchical messages extracted from source files
* @param {object} baseMessages hierarchical messages from the base OneSky translation
* @return {string[]} an array of new keys
*/
var getAddedKeys = function getAddedKeys(sourceMessages, baseMessages) {
var messageKeys = Object.keys(baseMessages);
var messageValues = Object.values(baseMessages);
var newEntries = Object.entries(sourceMessages).filter(function (_ref) {
var _ref2 = _rollupPluginBabelHelpers.slicedToArray(_ref, 1),
key = _ref2[0];
return messageKeys.indexOf(key) < 0;
});
return newEntries.map(function (_ref3) {
var _ref4 = _rollupPluginBabelHelpers.slicedToArray(_ref3, 2),
key = _ref4[0],
value = _ref4[1];
return messageValues.indexOf(value) >= 0 ? undefined : key;
}).filter(function (k) {
return k;
});
};
/**
* Return an array containing an array of keys for changed values based on the difference between source and OneSky base translation
*
* @param {object} sourceMessages hierarchical messages extracted from source files
* @param {object} baseMessages hierarchical messages from the base OneSky translation
* @return {string[]} an array of keys for changed valeus
*/
var getChangedKeys = function getChangedKeys(sourceMessages, baseMessages) {
return Object.entries(sourceMessages).filter(function (_ref5) {
var _ref6 = _rollupPluginBabelHelpers.slicedToArray(_ref5, 1),
key = _ref6[0];
return baseMessages[key];
}).filter(function (_ref7) {
var _ref8 = _rollupPluginBabelHelpers.slicedToArray(_ref7, 2),
key = _ref8[0],
value = _ref8[1];
return baseMessages[key] !== value;
}).map(function (_ref9) {
var _ref10 = _rollupPluginBabelHelpers.slicedToArray(_ref9, 1),
k = _ref10[0];
return k;
});
};
/**
* Return an array containing a [fromKey, toKey] tuple for renaming translation keys based on the difference between source and OneSky base translation
*
* @param {object} sourceMessages hierarchical messages extracted from source files
* @param {object} baseMessages hierarchical messages from the base OneSky translation
* @return {array[]} a [fromKey, toKey] tuple for renaming keys
*/
var getRenamedKeys = function getRenamedKeys(sourceMessages, baseMessages) {
var messageKeys = Object.keys(baseMessages);
var messageValues = Object.values(baseMessages);
var newEntries = Object.entries(sourceMessages).filter(function (_ref11) {
var _ref12 = _rollupPluginBabelHelpers.slicedToArray(_ref11, 1),
key = _ref12[0];
return messageKeys.indexOf(key) < 0;
});
return newEntries.map(function (_ref13) {
var _ref14 = _rollupPluginBabelHelpers.slicedToArray(_ref13, 2),
key = _ref14[0],
value = _ref14[1];
return messageValues.indexOf(value) >= 0 ? [messageKeys[messageValues.indexOf(value)], key] : [];
}).filter(function (_ref15) {
var _ref16 = _rollupPluginBabelHelpers.slicedToArray(_ref15, 1),
k = _ref16[0];
return k;
});
};
/**
* Return an array containing an array of deleted keys based on the difference between source and OneSky base translation
*
* @param {object} sourceMessages hierarchical messages extracted from source files
* @param {object} baseMessages hierarchical messages from the base OneSky translation
* @return {string[]} an array of deleted keys
*/
var getDeletedKeys = function getDeletedKeys(sourceMessages, baseMessages) {
var renamedKeys = getRenamedKeys(sourceMessages, baseMessages);
return Object.keys(baseMessages).filter(function (key) {
return Object.keys(sourceMessages).indexOf(key) < 0;
}).filter(function (key) {
return renamedKeys.filter(function (_ref17) {
var _ref18 = _rollupPluginBabelHelpers.slicedToArray(_ref17, 1),
k = _ref18[0];
return key === k;
}).length === 0;
});
};
/**
* Return a new flat message object according to modification instructions.
* This can be used to modify message objects from other languages based on modification instructions from the base language
*
* @param {object} messages
* @param {object} modifications
* @param {array[]} modifications.added
* @param {array[]} modifications.changed
* @param {array[]} modifications.renamed
* @param {string[]} modifications.deleted
*/
var updateMessages = function updateMessages(messages) {
var _ref19 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref19$added = _ref19.added,
added = _ref19$added === void 0 ? [] : _ref19$added,
_ref19$changed = _ref19.changed,
changed = _ref19$changed === void 0 ? [] : _ref19$changed,
_ref19$renamed = _ref19.renamed,
renamed = _ref19$renamed === void 0 ? [] : _ref19$renamed,
_ref19$deleted = _ref19.deleted,
deleted = _ref19$deleted === void 0 ? [] : _ref19$deleted;
var result = _rollupPluginBabelHelpers.objectSpread2({}, messages);
added.forEach(function (_ref20) {
var _ref21 = _rollupPluginBabelHelpers.slicedToArray(_ref20, 2),
key = _ref21[0],
value = _ref21[1];
result[key] = value;
});
changed.forEach(function (_ref22) {
var _ref23 = _rollupPluginBabelHelpers.slicedToArray(_ref22, 2),
key = _ref23[0],
value = _ref23[1];
result[key] = value;
});
renamed.forEach(function (_ref24) {
var _ref25 = _rollupPluginBabelHelpers.slicedToArray(_ref24, 2),
from = _ref25[0],
to = _ref25[1];
result[to] = messages[from];
delete result[from];
});
deleted.forEach(function (k) {
delete result[k];
});
return result;
};
exports.getAddedKeys = getAddedKeys;
exports.getChangedKeys = getChangedKeys;
exports.getDeletedKeys = getDeletedKeys;
exports.getRenamedKeys = getRenamedKeys;
exports.updateMessages = updateMessages;
//# sourceMappingURL=diff.js.map