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
    }

    Install

    npm i property-expr-csp

    DownloadsWeekly Downloads

    563

    Version

    1.4.0

    License

    MIT

    Unpacked Size

    29.9 kB

    Total Files

    9

    Last publish

    Collaborators

    • enet