@ -1,9 +1,12 @@
class Document :
class Document :
def __init__ ( self ) :
def __init__ ( self , filename ) :
self . characters = [ ]
self . characters = [ ]
self . cursor = Cursor ( self )
self . cursor = Cursor ( self )
self . filename = " "
if len ( filename ) == 0 :
raise FileNameInvalid ( " Invalid filename " )
else :
self . filename = filename
def insert ( self , character ) :
def insert ( self , character ) :
if not hasattr ( character , ' character ' ) :
if not hasattr ( character , ' character ' ) :
@ -12,12 +15,18 @@ class Document:
self . cursor . forward ( )
self . cursor . forward ( )
def delete ( self ) :
def delete ( self ) :
del self . characters [ self . cursor . position ]
try :
del self . characters [ self . cursor . position ]
except IndexError :
print ( " No character to delete " )
def save ( self ) :
def save ( self ) :
f = open ( self . filename , " w " )
f . write ( " " . join ( self . characters ) )
f . close ( )
try :
f = open ( self . filename , " w " )
f . write ( self . string )
f . close ( )
except IOError :
print ( " Could not safe file " )
@property
@property
def string ( self ) :
def string ( self ) :
@ -31,14 +40,16 @@ class Cursor:
self . position = 0
self . position = 0
def forward ( self ) :
def forward ( self ) :
self . position + = 1
if self . position < len ( self . document . characters ) :
self . position + = 1
def back ( self ) :
def back ( self ) :
self . position - = 1
if self . position > 0 :
self . position - = 1
def home ( self ) :
def home ( self ) :
while self . document . characters [ self . position - 1 ] . character != " \n " :
while self . document . characters [ self . position - 1 ] . character != " \n " :
self . position - = 1
self . back ( )
if self . position == 0 :
if self . position == 0 :
# got to beginning of file before newline
# got to beginning of file before newline
break
break
@ -46,12 +57,14 @@ class Cursor:
def end ( self ) :
def end ( self ) :
while ( self . position < len ( self . document . characters ) and
while ( self . position < len ( self . document . characters ) and
self . document . characters [ self . position ] . character != " \n " ) :
self . document . characters [ self . position ] . character != " \n " ) :
self . position + = 1
self . forward ( )
class Character :
class Character :
def __init__ ( self , character , bold = False , italic = False , underline = False ) :
def __init__ ( self , character , bold = False , italic = False , underline = False ) :
assert len ( character ) == 1
if len ( character ) != 1 :
raise CharacterLength ( " Please insert a single character " )
self . character = character
self . character = character
self . bold = bold
self . bold = bold
self . italic = italic
self . italic = italic
@ -63,3 +76,10 @@ class Character:
underline = " _ " if self . underline else ' '
underline = " _ " if self . underline else ' '
return bold + italic + underline + self . character
return bold + italic + underline + self . character
class FileNameInvalid ( Exception ) :
pass
class CharacterLength ( Exception ) :
pass