Repository URL to install this package:
|
Version:
6.1.0 ▾
|
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.updateMessages = exports.getDeletedKeys = exports.getRenamedKeys = exports.getChangedKeys = exports.getAddedKeys = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
/**
* 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 = (0, _slicedToArray2.default)(_ref, 1),
key = _ref2[0];
return messageKeys.indexOf(key) < 0;
});
return newEntries.map(function (_ref3) {
var _ref4 = (0, _slicedToArray2.default)(_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
*/
exports.getAddedKeys = getAddedKeys;
var getChangedKeys = function getChangedKeys(sourceMessages, baseMessages) {
return Object.entries(sourceMessages).filter(function (_ref5) {
var _ref6 = (0, _slicedToArray2.default)(_ref5, 1),
key = _ref6[0];
return baseMessages[key];
}).filter(function (_ref7) {
var _ref8 = (0, _slicedToArray2.default)(_ref7, 2),
key = _ref8[0],
value = _ref8[1];
return baseMessages[key] !== value;
}).map(function (_ref9) {
var _ref10 = (0, _slicedToArray2.default)(_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
*/
exports.getChangedKeys = getChangedKeys;
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 = (0, _slicedToArray2.default)(_ref11, 1),
key = _ref12[0];
return messageKeys.indexOf(key) < 0;
});
return newEntries.map(function (_ref13) {
var _ref14 = (0, _slicedToArray2.default)(_ref13, 2),
key = _ref14[0],
value = _ref14[1];
return messageValues.indexOf(value) >= 0 ? [messageKeys[messageValues.indexOf(value)], key] : [];
}).filter(function (_ref15) {
var _ref16 = (0, _slicedToArray2.default)(_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
*/
exports.getRenamedKeys = getRenamedKeys;
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 = (0, _slicedToArray2.default)(_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
*/
exports.getDeletedKeys = getDeletedKeys;
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 = _objectSpread({}, messages);
added.forEach(function (_ref20) {
var _ref21 = (0, _slicedToArray2.default)(_ref20, 2),
key = _ref21[0],
value = _ref21[1];
result[key] = value;
});
changed.forEach(function (_ref22) {
var _ref23 = (0, _slicedToArray2.default)(_ref22, 2),
key = _ref23[0],
value = _ref23[1];
result[key] = value;
});
renamed.forEach(function (_ref24) {
var _ref25 = (0, _slicedToArray2.default)(_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.updateMessages = updateMessages;
//# sourceMappingURL=diff.js.map