It's a set of simple functions that let you query or set values on your objects by a given string path.
Either:
git clone git://github.com/unlucio/vpo.git
or
npm install vpo
or
bower install vpo
v 2.0 - better handling of null/undefined. The default returned value is now undefined
istead of null
if none is given.
Given the following dummy object:
{
key1: {
foo1: {
bar1: 'bao',
bar2: 'bao'
},
foo2: {
bar2: 'bao'
},
foo3: {
bar3: 'bao'
}
},
key2: {
foo1: {
bar1: 'bao',
bar2: 'bao'
},
foo2: {
bar2: 'bao'
},
foo3: {
bar3: 'bao'
}
}
}
vpo.set(testObj, 'key1.foo2.bar2', 'resetBao');
vpo.get(testObj, 'key1.foo2.bar2');
vpo.get(testObj, 'key1.foo2.barNoExists', 'default');
vpo.getSome(testObj, ['key5.foo2.bar2', 'key1.foo2.bar2']);
vpo.getSome(testObj, ['key1.foo2.barNoExists', 'key1.foo12.barNoExists', 'key14.foo2.barNoExists'], 'default');
vpo.pick(testObj, ['key1.foo1.bar2', 'key1.foo4.bar2', 'key2.foo1']);
/**
will yield ==>
{
key1: {
foo1: {
bar2: 'bao'
}
},
key2: {
foo1: {
bar1: 'bao',
bar2: 'bao'
}
}
}
*/
I'm not sure who will ever be so "brave" to use it, but I'll leave it in since a dear friend of mine LOVES it :D
For convenince you can attach VPO to Object's prototype and have all your objects with 2 new methods:
vpo.setOnObjectPrototype();