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