granula
Version:
i18n tool for angular.js applications
41 lines (35 loc) • 1.27 kB
JavaScript
(function() {
var ADDED_KEY, DELETED_KEY, _;
_ = require('underscore');
ADDED_KEY = "-------------------added";
DELETED_KEY = "-----------------deleted";
module.exports = {
merge: function(oldJson, newJson, options) {
var appeared, disappeared, existent, newKeys, newObj, oldKeys, previouslyDeleted;
options = _.defaults(options, {
translateMe: "✍ "
});
previouslyDeleted = oldJson[DELETED_KEY];
oldJson = _.omit(oldJson, DELETED_KEY, ADDED_KEY);
oldKeys = _.keys(oldJson);
newKeys = _.keys(newJson);
existent = _.intersection(oldKeys, newKeys);
disappeared = _.difference(oldKeys, newKeys);
appeared = _.difference(newKeys, oldKeys);
newObj = {};
if (appeared.length > 0) {
newObj[ADDED_KEY] = "" + (new Date().toString());
}
_.extend(newObj, _.object(appeared.map(function(k) {
return [k, "" + options.translateMe + " " + newJson[k]];
})));
newObj[DELETED_KEY] = _.extend({}, _.object(disappeared.map(function(k) {
return [k, oldJson[k]];
})), previouslyDeleted);
_.extend(newObj, _.object(existent.map(function(k) {
return [k, oldJson[k]];
})));
return newObj;
}
};
}).call(this);