Guest User

text editor

a guest
May 28th, 2020
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.99 KB | None | 0 0
  1. class Editor:
  2.     def __init__(self):
  3.         self.s = ''
  4.         self.hist = [self.s]
  5.         self.hi = 0 # history index -> current state
  6.  
  7.     def append(self, t):
  8.         self.s += t
  9.         self._save()
  10.  
  11.     def delete(self, n):
  12.         self.s = self.s[:-n]
  13.         self._save()
  14.  
  15.     def undo(self):
  16.         if self.hi:
  17.             self.hi -= 1
  18.             self.s = self.hist[self.hi]
  19.  
  20.     def redo(self):
  21.         if self.hi < len(self.hist) - 1:
  22.             self.hi += 1
  23.             self.s = self.hist[self.hi]
  24.  
  25.     def _save(self):
  26.         self.hi += 1
  27.         if self.hi <= len(self.hist):
  28.             self.hist[self.hi:] = [self.s]
  29.         else:
  30.             self.hist.append(self.s)
  31.  
  32. if __name__ == '__main__':
  33.     e = Editor()
  34.     e.append('Hello, World')
  35.     print(e.s)
  36.     e.delete(5)
  37.     e.append('sekai')
  38.     e.append('!')
  39.     print(e.s)
  40.     e.undo()
  41.     e.undo()
  42.     e.undo()
  43.     print(e.s)
  44.     e.redo()
  45.     e.redo()
  46.     e.append('~')
  47.     print(e.s)
Advertisement
Add Comment
Please, Sign In to add comment