nl_tokens: get an deep property
pl_tokens: function getDeepProperty ( obj , keys ) { var _ref = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : { } , _ref$throwError = _ref . throwError , throwError = _ref$throwError === undefined ? false : _ref$throwError , backup = _ref . backup ; if ( isString ( keys ) ) { keys = keys . <mask> ( '.' ) ; } if ( ! isArray ( keys ) ) { throw new TypeError ( 'keys of getDeepProperty must be string or Array<string>' ) ; } var read = [ ] ; var target = obj ; for ( var i = 0 , len = keys . length ; i < len ; i ++ ) { var key = keys [ i ] ; if ( isVoid ( target ) ) { if ( throwError ) { throw new Error ( 'obj' + ( read . length > 0 ? '.' + read . join ( '.' ) : ' itself' ) + ' is ' + target ) ; } else { return backup ; } } target = target [ key ] ; read . push ( key ) ; } return target ; }