Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/i18n / dist / cjs / src / onesky / diff.js
Size: Mime:
'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