Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Editor:
- def __init__(self):
- self.s = ''
- self.hist = [self.s]
- self.hi = 0 # history index -> current state
- def append(self, t):
- self.s += t
- self._save()
- def delete(self, n):
- self.s = self.s[:-n]
- self._save()
- def undo(self):
- if self.hi:
- self.hi -= 1
- self.s = self.hist[self.hi]
- def redo(self):
- if self.hi < len(self.hist) - 1:
- self.hi += 1
- self.s = self.hist[self.hi]
- def _save(self):
- self.hi += 1
- if self.hi <= len(self.hist):
- self.hist[self.hi:] = [self.s]
- else:
- self.hist.append(self.s)
- if __name__ == '__main__':
- e = Editor()
- e.append('Hello, World')
- print(e.s)
- e.delete(5)
- e.append('sekai')
- e.append('!')
- print(e.s)
- e.undo()
- e.undo()
- e.undo()
- print(e.s)
- e.redo()
- e.redo()
- e.append('~')
- print(e.s)
Advertisement
Add Comment
Please, Sign In to add comment