UNPKG

jsan

Version:

handle circular references when stringifying and parsing

24 lines (21 loc) 605 B
module.exports = pathGetter; function pathGetter(obj, path) { if (path !== '$') { var paths = getPaths(path); for (var i = 0; i < paths.length; i++) { path = paths[i].toString().replace(/\\"/g, '"'); if (typeof obj[path] === 'undefined' && i !== paths.length - 1) continue; obj = obj[path]; } } return obj; } function getPaths(pathString) { var regex = /(?:\.(\w+))|(?:\[(\d+)\])|(?:\["((?:[^\\"]|\\.)*)"\])/g; var matches = []; var match; while (match = regex.exec(pathString)) { matches.push( match[1] || match[2] || match[3] ); } return matches; }