| @ -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 | |||||