commit 73d6cfecfa4d86c771cc40453c0905277771bb24
Author: Georg Baum <[email protected]>
Date:   Sun Apr 24 16:54:04 2016 +0200

    Make mergepo.py python3 compatible
    
    This follows the same recipe (by José) as 262ae8264a for po/lyx_pot.py.

diff --git a/development/tools/mergepo.py b/development/tools/mergepo.py
index f7eb3b7..0ed3b49 100755
--- a/development/tools/mergepo.py
+++ b/development/tools/mergepo.py
@@ -14,17 +14,14 @@
 
 
 import os, re, string, sys
+import io
 import polib
 from optparse import OptionParser
 
 
-# we do unix/windows line trimming ourselves since it can happen that we
-# are on unix, but the file has been written on windows or vice versa.
 def trim_eol(line):
-    " Remove end of line char(s)."
-    if line[-2:-1] == '\r':
-        return line[:-2]
-    elif line[-1:] == '\r' or line[-1:] == '\n':
+    " Remove end of line char."
+    if line[-1:] == '\n':
         return line[:-1]
     else:
         # file with no EOL in last line
@@ -39,7 +36,7 @@ def read(input):
         if not line:
             break
         line = trim_eol(line)
-        lines.append(line.decode('UTF-8'))
+        lines.append(line)
     return lines
 
 
@@ -132,7 +129,9 @@ def mergepo_minimaldiff(target, source, options):
     # otherwise we need to use polib
     if not target_enc in ['UTF-8', 'utf-8', 'utf_8']:
         raise
-    po1 = open(target, 'rb')
+    # open file with universal newlines, since it can happen that we are
+    # on unix, but the file has been written on windows or vice versa.
+    po1 = io.open(target, 'r', encoding='utf_8', newline=None)
     oldlines = read(po1)
     po1.close()
     newlines = []
@@ -180,9 +179,9 @@ def mergepo_minimaldiff(target, source, options):
     if changed > 0:
         # we store .po files with unix line ends in git,
         # so do always write them even on windows
-        po1 = open(target, 'wb')
+        po1 = io.open(target, 'w', encoding='utf_8', newline='\n')
         for line in newlines:
-            po1.write(line.encode('UTF-8') + '\n')
+            po1.write(line + '\n')
     return changed
 
 

Reply via email to