summaryrefslogtreecommitdiff
path: root/jsonpointer.py
diff options
context:
space:
mode:
authorStefan Kögl <stefan@skoegl.net>2012-09-07 11:25:32 +0200
committerStefan Kögl <stefan@skoegl.net>2012-09-07 11:25:32 +0200
commit3fadd63a77c7074fa7a4cd6bc04b0c34891a0d64 (patch)
tree79fe27d661719ae8ae78de3642d1dcc03d4d23c7 /jsonpointer.py
parentc446946cd179bc2bcfb79699e454519ade1d94c6 (diff)
downloadpython-json-pointer-3fadd63a77c7074fa7a4cd6bc04b0c34891a0d64.tar.gz
update jsonpointer to current specv0.3
http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-04
Diffstat (limited to 'jsonpointer.py')
-rw-r--r--jsonpointer.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/jsonpointer.py b/jsonpointer.py
index a96b0d5..8683303 100644
--- a/jsonpointer.py
+++ b/jsonpointer.py
@@ -31,11 +31,11 @@
#
""" Identify specific nodes in a JSON document according to
-http://tools.ietf.org/html/draft-pbryan-zyp-json-pointer-00 """
+http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-04 """
# Will be parsed by setup.py to determine package metadata
-__author__ = 'Stefan Kögl <stefan@skoegl.net>'
-__version__ = '0.2'
+__author__ = 'Stefan Kögl <stefan@skoegl.net>'
+__version__ = '0.3'
__website__ = 'https://github.com/stefankoegl/python-json-pointer'
__license__ = 'Modified BSD License'
@@ -57,7 +57,7 @@ def resolve_pointer(doc, pointer, default=_nothing):
>>> obj = {"foo": {"anArray": [ {"prop": 44}], "another prop": {"baz": "A string" }}}
- >>> resolve_pointer(obj, '/') == obj
+ >>> resolve_pointer(obj, '') == obj
True
>>> resolve_pointer(obj, '/foo') == obj['foo']
@@ -121,7 +121,11 @@ class JsonPointer(object):
if parts.pop(0) != '':
raise JsonPointerException('location must starts with /')
- self.parts = map(urllib.unquote, parts)
+ parts = map(urllib.unquote, parts)
+ parts = [part.replace('~1', '/') for part in parts]
+ parts = [part.replace('~0', '~') for part in parts]
+ self.parts = parts
+
def resolve(self, doc, default=_nothing):
@@ -188,9 +192,6 @@ class JsonPointer(object):
def walk(self, doc, part):
""" Walks one step in doc and returns the referenced part """
- if not part:
- return doc
-
# Its not clear if a location "1" should be considered as 1 or "1"
# We prefer the integer-variant if possible
part_variants = self._try_parse(part) + [part]
@@ -218,3 +219,4 @@ def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
return izip(a, b)
+__author__ = 'Stefan Kögl <stefan@skoegl.net>'