property-expr-csp

1.4.0 • Public • Published

property-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

Use

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!'

getter(expression, [ safeAccess ])

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

setter(expression)

Returns a function that accepts an obj and a value and sets the property pointed to by the expression to the supplied value.

expr(expression, [ safeAccess], [ paramName = 'data'])

Method was removed, because it makes no sense in CSP version.

split(path) -> Array

Returns an array of each path segment.

 split("foo['bar'][0].baz") // [ "foo", "'bar'", "0", "baz"]

forEach(path, iterator[, thisArg])

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

.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
}

Dependents (0)

Package Sidebar

Install

npm i property-expr-csp

Weekly Downloads

562

Version

1.4.0

License

MIT

Unpacked Size

29.9 kB

Total Files

9

Last publish

Collaborators

  • enet