-#! /usr/bin/env python
+#! /usr/bin/python3
# -*- coding: utf-8 -*-
# file unciodesymbols.py
# This script reads a unicode symbol file and completes it in the given range
+from __future__ import print_function
import os, re, string, sys, unicodedata
+import io
def usage(prog_name):
return ("Usage: %s start stop inputfile outputfile\n" % prog_name +
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':
+ if line[-1:] == '\n':
return line[:-1]
else:
# file with no EOL in last line
def write(output, lines):
- " Write output file with native lineendings."
+ " Write output file."
for line in lines:
- output.write(line[1] + os.linesep)
+ output.write(line[1] + '\n')
def complete(lines, start, stop):
for i in range(start, stop):
# This catches both comments (lines[l][0] == -1) and code points less than i
while l < len(lines) and lines[l][0] < i:
-# print lines[l]
+# print(lines[l])
l = l + 1
continue
if l >= len(lines) or lines[l][0] != i:
- c = unichr(i)
+ if sys.version_info[0] < 3:
+ c = unichr(i)
+ else:
+ c = chr(i)
name = unicodedata.name(c, "")
if name != "":
if unicodedata.combining(c):
combining = "combining"
else:
combining = ""
- line = [i, '#0x%04x "" "" "%s" # %s' % (i, combining, name)]
+ line = [i, '#0x%04x "" "" "%s" "" "" # %s' % (i, combining, name)]
lines.insert(l, line)
-# print lines[l]
+# print(lines[l])
l = l + 1
input = sys.stdin
output = sys.stdout
elif len(argv) == 5:
- input = open(argv[3], 'rb')
- output = open(argv[4], 'wb')
+ input = io.open(argv[3], 'r', encoding='utf_8')
+ output = io.open(argv[4], 'w', encoding='utf_8')
else:
error(usage(argv[0]))
if argv[1][:2] == "0x":