diff options
author | Stefan Kögl <stefan@skoegl.net> | 2012-09-07 11:25:32 +0200 |
---|---|---|
committer | Stefan Kögl <stefan@skoegl.net> | 2012-09-07 11:25:32 +0200 |
commit | 3fadd63a77c7074fa7a4cd6bc04b0c34891a0d64 (patch) | |
tree | 79fe27d661719ae8ae78de3642d1dcc03d4d23c7 /jsonpointer.py | |
parent | c446946cd179bc2bcfb79699e454519ade1d94c6 (diff) | |
download | python-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.py | 18 |
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>' |