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 / onesky / diff.js
Size: Mime:
"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