summaryrefslogtreecommitdiff
path: root/reader.py
diff options
context:
space:
mode:
Diffstat (limited to 'reader.py')
-rw-r--r--reader.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/reader.py b/reader.py
new file mode 100644
index 0000000..45d155c
--- /dev/null
+++ b/reader.py
@@ -0,0 +1,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())