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