Skip to content

Instantly share code, notes, and snippets.

@ramybenaroya
Created February 23, 2015 13:18
Show Gist options
  • Save ramybenaroya/010ac0e481eb8a2383cb to your computer and use it in GitHub Desktop.
Save ramybenaroya/010ac0e481eb8a2383cb to your computer and use it in GitHub Desktop.
Ember Data Recursive Transform
// app/transforms/recursive.js
export default DS.Transform.extend({
deserializeRecursively: function(toTraverse) {
var hash;
if (Ember.isArray(toTraverse)) {
return Ember.A(toTraverse.map(function(item) {
return this.deserializeRecursively(item);
}, this));
} else if (!Ember.$.isPlainObject(toTraverse)) {
return toTraverse;
} else {
hash = this.generatePlainObject(Ember.keys(toTraverse), Ember.keys(toTraverse).map(function(key) {
return this.deserializeRecursively(Ember.get(toTraverse, key));
}, this));
return Ember.Object.create(hash);
}
},
deserialize: function(serialized) {
return this.deserializeRecursively(serialized);
},
serialize: function(deserialized) {
return deserialized;
},
generatePlainObject: function(keys, values) {
var ret = {};
keys.forEach(function(key, i) {
ret[key] = values[i];
});
return ret;
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment