From 0dbac08bd96b7386bb102127af8f1996dfdb212a Mon Sep 17 00:00:00 2001 From: tmeissner Date: Sat, 4 Oct 2014 14:38:54 +0200 Subject: [PATCH] added case study of chapter 05 --- python_3_oop/chapter05/editor.py | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 python_3_oop/chapter05/editor.py diff --git a/python_3_oop/chapter05/editor.py b/python_3_oop/chapter05/editor.py new file mode 100644 index 0000000..e09f464 --- /dev/null +++ b/python_3_oop/chapter05/editor.py @@ -0,0 +1,47 @@ +class Document: + + def __init__(self): + self.characters = [] + self.cursor = Cursor(self) + self.filename = "" + + def insert(self, character): + self.characters.insert(self.cursor.position, character) + self.cursor.forward() + + def delete(self): + del self.characters[self.cursor.position] + + def save(self): + f = open(self.filename, "w") + f.write("".join(self.characters)) + f.close() + + @property + def string(self): + return "".join(self.characters) + + +class Cursor: + + def __init__(self, document): + self.document = document + self.position = 0 + + def forward(self): + self.position += 1 + + def back(self): + self.position -= 1 + + def home(self): + while self.document.characters[self.position - 1] != "\n": + self.position -= 1 + if self.position == 0: + # got to beginning of file before newline + break + + def end(self): + while (self.position < len(self.document.characters) and + self.document.characters[self.position] != "\n"): + self.position += 1