##// END OF EJS Templates
update json pointer
Matthias BUSSONNIER -
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 Kgl <stefan@skoegl.net>'
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(urllib.unquote, parts)
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