@yr/property v7.0.3
Generic utility for getting/setting properties of an object. Supports namespaced properties of type foo/bar and simple immutability.
Usage
var property = require('@yr/property');
var obj = {
  foo: {
    bar: 'bar',
    bat: {
      foo: 'foo'
    }
  }
};
property.get(obj, 'foo/bar'); //=> 'bar'
property.set(obj, 'foo/baz', false);
property.get(obj, 'foo/baz'); //=> false
property.set(obj, 'foo/bat', { boo: 'boo' });
property.get(obj, 'foo/bat'); //=> { foo: 'foo', boo: 'boo' }API
separator: character used to separate key segments (default is "/").
get(obj, key): retrieve value for key of obj. Keys can be namespaced (separated by exports.separator).
property.get(obj, 'foo/bar'); //=> 'bar'set(obj, key, value, options): store value at key of obj. Keys can be namespaced (separated by exports.separator). Behaviour is configurable with the following options properties:
immutable: return a unique copy ofobjwith changes applied, leaving the original unmodified (defaultfalse)merge: instead of overwriting, merge values if source and destination are objects (defaulttrue)
Note: When process.env.NODE_ENV != 'production' and options.immutable, the portion of the written, modified tree is deeply frozen with Object.freeze. 
var obj = {};
property.set(obj, 'foo/baz/boo', false); //=> { foo: { baz: { boo: false } } }
property.set(obj, 'foo/baz/bat', 'bat'); //=> { foo: { baz: { boo: false, bat: 'bat' } } }
property.set(obj, 'foo/baz', 'baz', { merge: false }); //=> { foo: { baz:'baz' } }
var obj2 = property.set(obj, 'foo/bar', 'foo', { immutable: true });
console.log(obj === obj2); //=> falsereshape(obj, depth): reshape keys of obj so that they have a maximum length of depth.
// Flatten object with key depth of 1
var obj = {	a: { aa: 'aa' } };
var flat = property.reshape(obj, 2);
console.log(flat['a/aa']); //=> aa
// Unflatten object with key depth of 2
var unflat = property.reshape(flat, 1);
console.log(unflat.a); //=> { aa: 'aa' }9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago