summaryrefslogtreecommitdiff
path: root/reader.py
blob: 45d155ce464fa44dc579bf94934a298f9f3b369c (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
32
33
34
class Reader:
    def __init__(self, filename):
        self.filename = filename
        self._file    = None
        self.lineno   = 0
        self.charno   = 0

    def __enter__(self):
        self._file = open(self.filename, "r")
        return self

    def __exit__(self, type, value, tb):
        self._file.close()

    def char(self):
        ch = self._file.read(1)
        self.charno += 1
        if ch == "\n":
            self.lineno += 1
            self.charno = 0
        return ch

    def peek(self):
        pos = self._file.tell()
        ch = self._file.read(1)
        self._file.seek(pos)
        return ch


if __name__ == "__main__":
    with Reader("reader.py") as src:
        print(src.peek())
        while src.peek() != "":
            print(src.char())