Show More
@@ -0,0 +1,4 b'' | |||||
|
1 | _jsonpointer.py | |||
|
2 | ||||
|
3 | extracted from jsonpointer.py following commit : | |||
|
4 | 97a06ecb9dde82bd54dc269052841035ca2a1390 |
@@ -34,14 +34,20 b'' | |||||
34 | http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-04 """ |
|
34 | http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-04 """ | |
35 |
|
35 | |||
36 | # Will be parsed by setup.py to determine package metadata |
|
36 | # Will be parsed by setup.py to determine package metadata | |
37 |
__author__ = 'Stefan K |
|
37 | __author__ = 'Stefan Kögl <stefan@skoegl.net>' | |
38 | __version__ = '0.3' |
|
38 | __version__ = '0.3' | |
39 | __website__ = 'https://github.com/stefankoegl/python-json-pointer' |
|
39 | __website__ = 'https://github.com/stefankoegl/python-json-pointer' | |
40 | __license__ = 'Modified BSD License' |
|
40 | __license__ = 'Modified BSD License' | |
41 |
|
41 | |||
42 |
|
42 | |||
43 | import urllib |
|
43 | try: | |
44 | from itertools import tee, izip |
|
44 | from urllib import unquote | |
|
45 | from itertools import izip | |||
|
46 | except ImportError: # Python 3 | |||
|
47 | from urllib.parse import unquote | |||
|
48 | izip = zip | |||
|
49 | ||||
|
50 | from itertools import tee | |||
45 |
|
51 | |||
46 |
|
52 | |||
47 | class JsonPointerException(Exception): |
|
53 | class JsonPointerException(Exception): | |
@@ -105,8 +111,8 b' def set_pointer(doc, pointer, value):' | |||||
105 | >>> obj = {'foo': 2, 'bar': [{'x': 5}]} |
|
111 | >>> obj = {'foo': 2, 'bar': [{'x': 5}]} | |
106 | >>> pointer = JsonPointer('/bar/0') |
|
112 | >>> pointer = JsonPointer('/bar/0') | |
107 | >>> pointer.set(obj, 10, 'y/0') |
|
113 | >>> pointer.set(obj, 10, 'y/0') | |
108 | >>> obj |
|
114 | >>> obj == {'foo': 2, 'bar': [{'y': [10], 'x': 5}]} | |
109 | {'foo': 2, 'bar': [{'y': [10], 'x': 5}]} |
|
115 | True | |
110 | """ |
|
116 | """ | |
111 |
|
117 | |||
112 | pointer = JsonPointer(pointer) |
|
118 | pointer = JsonPointer(pointer) | |
@@ -121,7 +127,7 b' class JsonPointer(object):' | |||||
121 | if parts.pop(0) != '': |
|
127 | if parts.pop(0) != '': | |
122 | raise JsonPointerException('location must starts with /') |
|
128 | raise JsonPointerException('location must starts with /') | |
123 |
|
129 | |||
124 |
parts = map( |
|
130 | parts = map(unquote, parts) | |
125 | parts = [part.replace('~1', '/') for part in parts] |
|
131 | parts = [part.replace('~1', '/') for part in parts] | |
126 | parts = [part.replace('~0', '~') for part in parts] |
|
132 | parts = [part.replace('~0', '~') for part in parts] | |
127 | self.parts = parts |
|
133 | self.parts = parts | |
@@ -217,6 +223,6 b' class JsonPointer(object):' | |||||
217 | def pairwise(iterable): |
|
223 | def pairwise(iterable): | |
218 | "s -> (s0,s1), (s1,s2), (s2, s3), ..." |
|
224 | "s -> (s0,s1), (s1,s2), (s2, s3), ..." | |
219 | a, b = tee(iterable) |
|
225 | a, b = tee(iterable) | |
220 | next(b, None) |
|
226 | for _ in b: | |
|
227 | break | |||
221 | return izip(a, b) |
|
228 | return izip(a, b) | |
222 | __author__ = 'Stefan Kögl <stefan@skoegl.net>' |
|
General Comments 0
You need to be logged in to leave comments.
Login now