0.1.2 • Published 8 years ago

object-surrogate v0.1.2

Weekly downloads
2
License
CC0-1.0
Repository
github
Last release
8 years ago

object-surrogate

Create object proxies with property accessors bound to data.

var surrogate = require('object-surrogate');
var assert = require('assert');

var data = {
  x: 1
};

var proxy = surrogate(data, {
  y: function(d) { return d.x + 1; }
});

// own properties are preserved if not overwritten by the proxy
assert.equal(proxy.x, 1);
assert.equal(proxy.y, 2);

Objects are proxied deeply, so you can define nested properties:

var person = {
  first_name: 'Joe',
  last_name: 'Blow'
};

var personProxy = {
  name: {
    first: function(d) { return d.first_name; },
    last: function(d) { return d.last_name; },
    full: function(d) {
      return [d.first_name, d.last_name].join(' ');
    }
  }
};

var proxy = surrogate(person, personProxy);

assert.equal(proxy.name.first, 'Joe');
assert.equal(proxy.name.last, 'Blow');
assert.equal(proxy.name.full, 'Joe Blow');

Arrays are mapped to surrogates of their values:

var people = [person];
var proxies = surrogate(people, personProxy);
assert.equal(proxies[0].name.full, 'Joe Blow');