Fix Python 3 build
- Take care of the differences in handling unicode characters in `escape_string` (formerly in `editor/SCsub`, now in `compat.py)`. - Conditionally include `_winreg` or `winreg` in the Mono editor module.
This commit is contained in:
parent
2e6f2ed032
commit
727a381fc9
3 changed files with 35 additions and 12 deletions
29
compat.py
29
compat.py
|
@ -14,6 +14,17 @@ if sys.version_info < (3,):
|
|||
return x
|
||||
def iteritems(d):
|
||||
return d.iteritems()
|
||||
def escape_string(s):
|
||||
if isinstance(s, unicode):
|
||||
s = s.encode('ascii')
|
||||
result = ''
|
||||
for c in s:
|
||||
if not (32 <= ord(c) < 127) or c in ('\\', '"'):
|
||||
result += '\\%03o' % ord(c)
|
||||
else:
|
||||
result += c
|
||||
return result
|
||||
|
||||
else:
|
||||
def isbasestring(s):
|
||||
return isinstance(s, (str, bytes))
|
||||
|
@ -29,3 +40,21 @@ else:
|
|||
return codecs.utf_8_encode(x)[0]
|
||||
def iteritems(d):
|
||||
return iter(d.items())
|
||||
def charcode_to_c_escapes(c):
|
||||
rev_result = []
|
||||
while c >= 256:
|
||||
c, low = (c // 256, c % 256)
|
||||
rev_result.append('\\%03o' % low)
|
||||
rev_result.append('\\%03o' % c)
|
||||
return ''.join(reversed(rev_result))
|
||||
def escape_string(s):
|
||||
result = ''
|
||||
if isinstance(s, str):
|
||||
s = s.encode('utf-8')
|
||||
for c in s:
|
||||
if not(32 <= c < 127) or c in (ord('\\'), ord('"')):
|
||||
result += charcode_to_c_escapes(c)
|
||||
else:
|
||||
result += chr(c)
|
||||
return result
|
||||
|
||||
|
|
12
editor/SCsub
12
editor/SCsub
|
@ -4,18 +4,8 @@ Import('env')
|
|||
env.editor_sources = []
|
||||
|
||||
import os
|
||||
from compat import encode_utf8, byte_to_str, open_utf8
|
||||
from compat import encode_utf8, byte_to_str, open_utf8, escape_string
|
||||
|
||||
def escape_string(s, encoding='ascii'):
|
||||
if isinstance(s, unicode):
|
||||
s = s.encode(encoding)
|
||||
result = ''
|
||||
for c in s:
|
||||
if not (32 <= ord(c) < 127) or c in ('\\', '"'):
|
||||
result += '\\%03o' % ord(c)
|
||||
else:
|
||||
result += c
|
||||
return result
|
||||
|
||||
def make_certs_header(target, source, env):
|
||||
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
import os
|
||||
|
||||
if os.name == 'nt':
|
||||
import _winreg as winreg
|
||||
import sys
|
||||
if sys.version_info < (3,):
|
||||
import _winreg as winreg
|
||||
else:
|
||||
import winreg
|
||||
|
||||
|
||||
def _reg_open_key(key, subkey):
|
||||
|
|
Loading…
Reference in a new issue