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.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