[Idle-dev] CVS: idle IOBinding.py,1.13,1.14

Guido van Rossum gvanrossum@users.sourceforge.net
Fri, 25 Apr 2003 11:36:35 -0700


Update of /cvsroot/idlefork/idle
In directory sc8-pr-cvs1:/tmp/cvs-serv16219

Modified Files:
	IOBinding.py 
Log Message:
New feature: when saving a file, keep the eol convention of the
original.  New files are written using the eol convention of the
platform, given by os.linesep.  All files are read and written in
binary mode.


Index: IOBinding.py
===================================================================
RCS file: /cvsroot/idlefork/idle/IOBinding.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** IOBinding.py	4 Mar 2003 04:42:04 -0000	1.13
--- IOBinding.py	25 Apr 2003 18:36:31 -0000	1.14
***************
*** 179,182 ****
--- 179,186 ----
          return "break"
  
+     eol = r"(\r\n)|\n|\r"  # \r\n (Windows), \n (UNIX), or \r (Mac)
+     eol_re = re.compile(eol)
+     eol_convention = os.linesep # Default
+ 
      def loadfile(self, filename):
          try:
***************
*** 192,197 ****
          chars = self.decode(chars)
          # We now convert all end-of-lines to '\n's
!         eol = r"(\r\n)|\n|\r"  # \r\n (Windows), \n (UNIX), or \r (Mac)
!         chars = re.compile( eol ).sub( r"\n", chars )
  
          self.text.delete("1.0", "end")
--- 196,203 ----
          chars = self.decode(chars)
          # We now convert all end-of-lines to '\n's
!         firsteol = self.eol_re.search(chars)
!         if firsteol:
!             self.eol_convention = firsteol.group(0)
!             chars = self.eol_re.sub(r"\n", chars)
  
          self.text.delete("1.0", "end")
***************
*** 307,312 ****
          self.fixlastline()
          chars = self.encode(self.text.get("1.0", "end-1c"))
          try:
!             f = open(filename, "w")
              f.write(chars)
              f.close()
--- 313,320 ----
          self.fixlastline()
          chars = self.encode(self.text.get("1.0", "end-1c"))
+         if self.eol_convention != "\n":
+             chars = chars.replace("\n", self.eol_convention)
          try:
!             f = open(filename, "wb")
              f.write(chars)
              f.close()