@@ -252,6 +252,65 @@ def extend(self, wrapped_list):
252
252
self ._obj .extend (unwrapped_list )
253
253
super (JsonArray , self ).extend (wrapped_list )
254
254
255
+ def insert (self , index , wrapped ):
256
+ wrapped , unwrapped = self ._wrapper .unwrap (wrapped )
257
+ self ._obj .insert (index , unwrapped )
258
+ super (JsonArray , self ).insert (index , wrapped )
259
+
260
+ def remove (self , value ):
261
+ i = self .index (value )
262
+ super (JsonArray , self ).remove (value )
263
+ self ._obj .pop (i )
264
+
265
+ def pop (self , index = - 1 ):
266
+ self ._obj .pop (index )
267
+ return super (JsonArray , self ).pop (index )
268
+
269
+ def sort (self , cmp = None , key = None , reverse = False ):
270
+ zipped = zip (self , self ._obj )
271
+ if key :
272
+ new_key = lambda pair : key (pair [0 ])
273
+ zipped .sort (key = new_key , reverse = reverse )
274
+ elif cmp :
275
+ new_cmp = lambda pair1 , pair2 : cmp (pair1 [0 ], pair2 [0 ])
276
+ zipped .sort (cmp = new_cmp , reverse = reverse )
277
+ else :
278
+ zipped .sort (reverse = reverse )
279
+
280
+ wrapped_list , unwrapped_list = zip (* zipped )
281
+ while self :
282
+ self .pop ()
283
+ super (JsonArray , self ).extend (wrapped_list )
284
+ self ._obj .extend (unwrapped_list )
285
+
286
+ def reverse (self ):
287
+ self ._obj .reverse ()
288
+ super (JsonArray , self ).reverse ()
289
+
290
+ def __fix_slice (self , i , j ):
291
+ length = len (self )
292
+ if j < 0 :
293
+ j += length
294
+ if i < 0 :
295
+ i += length
296
+ if i > length :
297
+ i = length
298
+ if j > length :
299
+ j = length
300
+ return i , j
301
+
302
+ def __setslice__ (self , i , j , sequence ):
303
+ i , j = self .__fix_slice (i , j )
304
+ for _ in range (j - i ):
305
+ self .pop (i )
306
+ for k , wrapped in enumerate (sequence ):
307
+ self .insert (i + k , wrapped )
308
+
309
+ def __delslice__ (self , i , j ):
310
+ i , j = self .__fix_slice (i , j )
311
+ for _ in range (j - i ):
312
+ self .pop (i )
313
+
255
314
256
315
class SimpleDict (dict ):
257
316
"""
0 commit comments