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
29
compat.py
29
compat.py
|
@ -14,6 +14,17 @@ if sys.version_info < (3,):
|
||||||
return x
|
return x
|
||||||
def iteritems(d):
|
def iteritems(d):
|
||||||
return d.iteritems()
|
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:
|
else:
|
||||||
def isbasestring(s):
|
def isbasestring(s):
|
||||||
return isinstance(s, (str, bytes))
|
return isinstance(s, (str, bytes))
|
||||||
|
@ -29,3 +40,21 @@ else:
|
||||||
return codecs.utf_8_encode(x)[0]
|
return codecs.utf_8_encode(x)[0]
|
||||||
def iteritems(d):
|
def iteritems(d):
|
||||||
return iter(d.items())
|
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 = []
|
env.editor_sources = []
|
||||||
|
|
||||||
import os
|
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):
|
def make_certs_header(target, source, env):
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
if os.name == 'nt':
|
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):
|
def _reg_open_key(key, subkey):
|
||||||
|
|
Loading…
Reference in New Issue