@@ -458,20 +458,20 @@ def __init__(self, start=None, end=None, step=None):
458
458
self .end = end
459
459
self .step = step
460
460
461
- def find (self , data ):
461
+ def find (self , datum ):
462
+ datum = DatumInContext .wrap (datum )
463
+
462
464
# Here's the hack. If it is a dictionary or some kind of constant,
463
465
# put it in a single-element list
464
- if (isinstance (data , dict ) or isinstance (data , six .integer_types )
465
- or isinstance (data , six .string_types )):
466
-
467
- return self .find ([data ])
466
+ if (isinstance (datum .value , dict ) or isinstance (datum .value , six .integer_types ) or isinstance (datum .value , six .string_types )):
467
+ return self .find (DatumInContext ([datum .value ], path = datum .path , context = datum .context ))
468
468
469
469
# Some iterators do not support slicing but we can still
470
470
# at least work for '*'
471
471
if self .start == None and self .end == None and self .step == None :
472
- return [DatumInContext (data [i ], Index (i )) for i in xrange (0 , len (data ))]
472
+ return [DatumInContext (datum . value [i ], path = Index (i ), context = datum ) for i in xrange (0 , len (datum . value ))]
473
473
else :
474
- return [DatumInContext (data [i ], Index (i )) for i in range (0 , len (data ))[self .start :self .end :self .step ]]
474
+ return [DatumInContext (datum . value [i ], path = Index (i ), context = datum ) for i in range (0 , len (datum . value ))[self .start :self .end :self .step ]]
475
475
476
476
def __str__ (self ):
477
477
if self .start == None and self .end == None and self .step == None :
@@ -481,5 +481,8 @@ def __str__(self):
481
481
':%d' % self .end if self .end else '' ,
482
482
':%d' % self .step if self .step else '' )
483
483
484
+ def __repr__ (self ):
485
+ return '%s(start=%r,end=%r,step=%r)' % (self .__class__ .__name__ , self .start , self .end , self .step )
486
+
484
487
def __eq__ (self , other ):
485
488
return isinstance (other , Slice ) and other .start == self .start and self .end == other .end and other .step == self .step
0 commit comments