Skip to content

Commit 26f85e4

Browse files
committed
set now works
set() wasn't called with value in test, nor was set calling traverse() with value, nor was recursive call of traverse called with value. Now it is.
1 parent 8f818ef commit 26f85e4

2 files changed

Lines changed: 13 additions & 12 deletions

File tree

jsonpointer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ var traverse = function(obj, pointer, value) {
1717
return obj[part];
1818
}
1919
} else { // keep traversin!
20-
return traverse(obj[part], pointer);
20+
return traverse(obj[part], pointer, value);
2121
}
2222
} else {
2323
throw("Value for pointer '" + pointer + "' not found.");
@@ -43,7 +43,7 @@ var get = function(obj, pointer) {
4343
var set = function(obj, pointer, value) {
4444
validate_input(obj, pointer);
4545
pointer = pointer.split("/").slice(1);
46-
return traverse(obj, pointer);
46+
return traverse(obj, pointer, value);
4747
}
4848

4949
exports.get = get

test.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,17 @@ assert.equal(jsonpointer.get(obj, "/d/e/0/a"), 3);
1818
assert.equal(jsonpointer.get(obj, "/d/e/1/b"), 4);
1919
assert.equal(jsonpointer.get(obj, "/d/e/2/c"), 5);
2020

21-
assert.equal(jsonpointer.set(obj, "/a"), 1);
22-
assert.equal(jsonpointer.set(obj, "/b/c"), 2);
23-
assert.equal(jsonpointer.set(obj, "/d/e/0/a"), 3);
24-
assert.equal(jsonpointer.set(obj, "/d/e/1/b"), 4);
25-
assert.equal(jsonpointer.set(obj, "/d/e/2/c"), 5);
21+
// set returns old value
22+
assert.equal(jsonpointer.set(obj, "/a", 2), 1);
23+
assert.equal(jsonpointer.set(obj, "/b/c", 3), 2);
24+
assert.equal(jsonpointer.set(obj, "/d/e/0/a", 4), 3);
25+
assert.equal(jsonpointer.set(obj, "/d/e/1/b", 5), 4);
26+
assert.equal(jsonpointer.set(obj, "/d/e/2/c", 6), 5);
2627

27-
assert.equal(jsonpointer.get(obj, "/a"), 1);
28-
assert.equal(jsonpointer.get(obj, "/b/c"), 2);
29-
assert.equal(jsonpointer.get(obj, "/d/e/0/a"), 3);
30-
assert.equal(jsonpointer.get(obj, "/d/e/1/b"), 4);
31-
assert.equal(jsonpointer.get(obj, "/d/e/2/c"), 5);
28+
assert.equal(jsonpointer.get(obj, "/a"), 2);
29+
assert.equal(jsonpointer.get(obj, "/b/c"), 3);
30+
assert.equal(jsonpointer.get(obj, "/d/e/0/a"), 4);
31+
assert.equal(jsonpointer.get(obj, "/d/e/1/b"), 5);
32+
assert.equal(jsonpointer.get(obj, "/d/e/2/c"), 6);
3233

3334
console.log("All tests pass.");

0 commit comments

Comments
 (0)