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 / transform.js
Size: Mime:
"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.flatten = exports.unflatten = void 0;

var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));

var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));

var _deepmerge = _interopRequireDefault(require("deepmerge"));

/**
 * Transform translation files between flat JSON and hierarchical JSON
 *
 * @module @doodle/i18n/disty/onesky/transform
 */

/**
 * Unflatten a messages object
 *
 * @param {object} messages a flat messages object
 * @returns {object} a hierarchical messages object
 */
var unflatten = function unflatten(messages) {
  var hierarchicalMessages = Object.entries(messages).map(function (_ref) {
    var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
        key = _ref2[0],
        value = _ref2[1];

    var keyComponents = key.split('.');
    var leafKeyComponent = keyComponents.pop();
    return keyComponents.reverse().reduce(function (hierarchicalMessage, keyComponent) {
      return (0, _defineProperty2.default)({}, keyComponent, hierarchicalMessage);
    }, (0, _defineProperty2.default)({}, leafKeyComponent, value));
  });
  return _deepmerge.default.all(hierarchicalMessages);
};
/**
 * Flatten a messages object
 *
 * @param {object} messages hierarchical object
 * @return {object} a flat messages object
 */


exports.unflatten = unflatten;

var flatten = function flatten(messages) {
  return Object.entries(messages).reduce(function (result, _ref4) {
    var _ref5 = (0, _slicedToArray2.default)(_ref4, 2),
        key = _ref5[0],
        value = _ref5[1];

    if ((0, _typeof2.default)(value) === 'object') {
      Object.entries(flatten(value)).forEach(function (_ref6) {
        var _ref7 = (0, _slicedToArray2.default)(_ref6, 2),
            flatKey = _ref7[0],
            flatValue = _ref7[1];

        result["".concat(key, ".").concat(flatKey)] = flatValue;
      });
    } else {
      result[key] = value;
    }

    return result;
  }, {});
};

exports.flatten = flatten;
//# sourceMappingURL=transform.js.map