source: branches/pyyaml3000/lib/yaml/stream.py @ 43

Revision 43, 797 bytes checked in by xi, 8 years ago (diff)

Scanner is mostly completed. Need to write alias, tag, and scalar scanners.

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