gson-pointer
Advanced tools
Comparing version 1.0.4 to 2.0.0
@@ -6,9 +6,43 @@ "use strict"; | ||
function filterNotEmpty(value) { | ||
return (value == null || value === "") === false; | ||
} | ||
function cleanupPointer(pointer) { | ||
return stripPointerPrefix(pointer); | ||
} | ||
function splitPointer(pointer) { | ||
return pointer.split("/"); | ||
} | ||
function flattenArray(list, result = []) { | ||
for (let i = 0; i < list.length; i += 1) { | ||
if (Array.isArray(list[i])) { | ||
flattenArray(list[i], result); | ||
} else { | ||
result.push(list[i]); | ||
} | ||
} | ||
return result; | ||
} | ||
function resolveRelatives(frags, pointer) { | ||
pointer === ".." ? frags.pop() : frags.push(pointer); | ||
return frags; | ||
} | ||
function join() { | ||
var pointer = Array.prototype.map.call(arguments, function (pointer) { | ||
return stripPointerPrefix(pointer); | ||
}); | ||
pointer = "#/" + pointer.join("/"); | ||
return pointer.replace(/\/+/g, "/"); | ||
var args = Array.prototype.slice.call(arguments, 0); | ||
var pointer = args | ||
.map(cleanupPointer) | ||
.filter(filterNotEmpty) | ||
.map(splitPointer) | ||
var result = flattenArray(pointer) | ||
.reduce(resolveRelatives, []); | ||
result.unshift("#"); | ||
result = result.join("/"); | ||
return result.replace(/\/+/g, "/"); | ||
} | ||
@@ -15,0 +49,0 @@ |
{ | ||
"name": "gson-pointer", | ||
"version": "1.0.4", | ||
"version": "2.0.0", | ||
"description": "json pointer - failsafe data retrieval on js and json objects", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
6474
165