diff --git a/README.md b/README.md index 62a8c02..0aaed07 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,14 @@ var testObject = { '[abc"de"]': 3 } +console.log(get(testObject, ''), testObject); + +console.log(get(testObject), testObject); + console.log(get(testObject, 'a.b.c'), testObject.a.b.c); +console.log(get(testObject, '["a.b"]'), testObject['a.b']); + console.log(get(testObject, '[\'abc"de"\']'), testObject['abc"de"']); console.log(get(testObject, '[\'[abc"de"]\']'), testObject['[abc"de"]']); diff --git a/index.js b/index.js index c8331ca..a3d64b2 100644 --- a/index.js +++ b/index.js @@ -3,6 +3,9 @@ var parsePath = require('./ParsePath'); var hasOwnProp = Object.prototype.hasOwnProperty; function get(obj, path) { + if (path === undefined || path === null) { + return obj; + } var result = null; var keys = typeof path == 'string' ? parsePath(path) : diff --git a/test.js b/test.js index 573857f..7413107 100644 --- a/test.js +++ b/test.js @@ -27,22 +27,40 @@ var testObject = { }], 'abc"de"': 2, - '[abc"de"]': 3 + '[abc.de]': 3, + 'a.b': 3 } console.log('testObject = ' + JSON.stringify(testObject, null, 4)); +console.log('Test:', "assert.equal(get(testObject, ''), testObject);"); +assert.equal(get(testObject, ''), testObject); +console.log('>> Ok\n'); + + +console.log('Test:', "assert.equal(get(testObject), testObject);"); +assert.equal(get(testObject), testObject); +console.log('>> Ok\n'); + console.log('Test:', "assert.equal(get(testObject, 'a.b.c'), testObject.a.b.c);"); assert.equal(get(testObject, 'a.b.c'), testObject.a.b.c); console.log('>> Ok\n'); -// console.log('Test:', "get(testObject, '[\'abc\"de\"\']'), testObject['abc\"de\"'];"); -// assert.equal(get(testObject, '[\'abc"de"\']'), testObject['abc"de"']); -// console.log('>> Ok\n'); +console.log('Test:', "assert.equal(get(testObject, '[\"a.b\"]'), testObject['a.b']);"); +assert.equal(get(testObject, '["a.b"]'), testObject['a.b']); +console.log('>> Ok\n'); -// console.log('Test:', "assert.equal(get(testObject, '[\'[abc\"de\"]\']'), testObject['[abc\"de\"]']);"); -// assert.equal(get(testObject, '[\'[abc"de"]\']'), testObject['[abc"de"]']); -// console.log('>> Ok\n'); +console.log('Test:', "get(testObject, '[\'abc\"de\"\']'), testObject['abc\"de\"'];"); +assert.equal(get(testObject, '[\'abc"de"\']'), testObject['abc"de"']); +console.log('>> Ok\n'); + +console.log('Test:', "assert.equal(get(testObject, '[\'[abc\"de\"]\']'), testObject['[abc\"de\"]']);"); +assert.equal(get(testObject, '[\'[abc"de"]\']'), testObject['[abc"de"]']); +console.log('>> Ok\n'); + +console.log('Test:', "assert.equal(get(testObject, ''), testObject);"); +assert.equal(get(testObject, ''), testObject); +console.log('>> Ok\n'); console.log('Test:', "assert.equal(get(testObject, 'a.d[0]'), testObject.a.d[0]);"); assert.equal(get(testObject, 'a.d[0]'), testObject.a.d[0]);