blob: 47f72a2581a08351435053ca9dc0df28f416dd7d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
from marker import Marker
class Stream:
def __init__(self, source, data):
self.source = source
self.data = unicode(data, 'utf-8')+u'\0'
self.index = 0
self.line = 0
self.column = 0
def peek(self, k=1):
return self.data[self.index:self.index+k]
def read(self, k=1):
value = self.data[self.index:self.index+k]
for i in range(k):
if self.index >= len(self.data):
break
if self.data[self.index] in u'\r\n\x85\u2028\u2029':
self.line += 1
self.column = 0
else:
self.column += 1
self.index += 1
return value
def get_marker(self):
return Marker(self.source, self.data, self.index, self.line, self.column)
|