summaryrefslogtreecommitdiff
path: root/lib/yaml/stream.py
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)