@@ -272,35 +272,46 @@ def charsUntil(self, characters, opposite = False):
272272 #If the queue doesn't grow we have reached EOF
273273 if i == len (self .queue ) or self .queue [i ] is EOF :
274274 break
275+ #XXX- wallpaper over bug in calculation below
276+ #Otherwise change the stream position
277+ if self .queue [i ] == '\n ' :
278+ self .lineLengths .append (self .col )
279+ self .line += 1
280+ self .col = 0
281+ else :
282+ self .col += 1
275283
276284 rv = u"" .join (self .queue [:i ])
285+ self .queue = self .queue [i :]
277286
278287 #Calculate where we now are in the stream
279288 #One possible optimisation would be to store all read characters and
280289 #Calculate this on an as-needed basis (perhaps flushing the read data
281290 #every time we read a new chunk) rather than once per call here and
282291 #in .char()
283- lines = rv .split ("\n " )
284292
285- if lines :
286- #Add number of lines passed onto positon
287- oldCol = self .col
288- self .line += len (lines )- 1
289- if len (lines ) > 1 :
290- self .col = len (lines [- 1 ])
291- else :
292- self .col += len (lines [0 ])
293-
294- if self .lineLengths and oldCol > 0 :
295- self .lineLengths [- 1 ] += len (lines [0 ])
296- lines = lines [1 :- 1 ]
297- else :
298- lines = lines [:- 1 ]
293+ #XXX Temporarily disable this because there is a bug
299294
300- for line in lines :
301- self .lineLengths .append (len (line ))
302-
303- self .queue = self .queue [i :]
295+ #lines = rv.split("\n")
296+ #
297+ #if lines:
298+ # #Add number of lines passed onto positon
299+ # oldCol = self.col
300+ # self.line += len(lines)-1
301+ # if len(lines) > 1:
302+ # self.col = len(lines[-1])
303+ # else:
304+ # self.col += len(lines[0])
305+ #
306+ # if self.lineLengths and oldCol > 0:
307+ # self.lineLengths[-1] += len(lines[0])
308+ # lines = lines[1:-1]
309+ # else:
310+ # lines = lines[:-1]
311+ #
312+ # for line in lines:
313+ # self.lineLengths.append(len(line))
314+ #
304315
305316 return rv
306317
0 commit comments