tiny util for getting and setting deep object props safely
npm install property-expr-cspproperty-expr-csp
=================
Tiny expression helper for creating accessors; handles most stuff, including ["bracket notation"] for property access. Originally based off of Kendo UI Core expression code and the original property-expr package, but here is special version to satisfy CSP (Content-Security-Policy) requirements!
npm install property-expr-csp
Setters and getters are not compiled to functions and executed every time to satisfy CSP
var expr = require('property-expr')
, obj = {
foo: {
bar: [ "hi", { buz: { baz: 'found me!' } }]
}
};
var getBaz = expr.getter('foo.bar[1]["buz"].baz')
, setBaz = expr.setter('foo.bar[1]["buz"].baz')
console.log(getBaz(obj)) // => 'found me!'
setBaz(obj, 'set me!')
console.log(obj.foo.bar[1].buz.baz) // => 'set me!'
Returns a function that accepts an obj and returns the value at the supplied expression. You can create a "safe" getter, which won't error out when accessing properties that don't exist, reducing existance checks befroe property access:
expr.getter('foo.bar.baz', true)({ foo: {} }) // => undefined
//instead of val = foo.bar && foo.bar.baz
Returns a function that accepts an obj and a value and sets the property pointed to by the expression to the supplied value.
Method was removed, because it makes no sense in CSP version.
Returns an array of each path segment.
``js`
split("foo['bar'][0].baz") // [ "foo", "'bar'", "0", "baz"]
Iterate through a path but segment, with some additional helpful metadata about the segment. The iterator function is called with: pathSegment, isBracket, isArray, idx, segments
`js``
.forEach('foo["bar"][1]', function(pathSegment, isBracket, isArray, idx, segments) {
// 'foo' -> isBracket = false, isArray = false, idx = 0
// '"bar"' -> isBracket = true, isArray = false, idx = 1
// '0' -> isBracket = false, isArray = true, idx = 2
}