aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-10-21 15:39:23 -0400
committerJesse Luehrs <doy@tozt.net>2014-10-21 17:57:25 -0400
commit90baa3cf2db4b0889a02d1509c25eb0316ad78e1 (patch)
treec21d3e8e1cb42020779c6ee09720775b7ade25ef
parentb353f760c7f9b9d1091f23b67ff35122c87abac3 (diff)
downloadlibvt100-python-90baa3cf2db4b0889a02d1509c25eb0316ad78e1.tar.gz
libvt100-python-90baa3cf2db4b0889a02d1509c25eb0316ad78e1.zip
fix things under python 2
-rw-r--r--t/__init__.py2
-rw-r--r--t/processing_test.py1
-rw-r--r--t/text_test.py25
-rw-r--r--vt100/__init__.py4
-rw-r--r--vt100module.c8
5 files changed, 25 insertions, 15 deletions
diff --git a/t/__init__.py b/t/__init__.py
index 130a085..b7a4f12 100644
--- a/t/__init__.py
+++ b/t/__init__.py
@@ -7,7 +7,7 @@ class VT100Test(unittest.TestCase):
self.vt = vt100.vt100(24, 80)
def process(self, text):
- if type(text) == type(""):
+ if type(text) == type(u""):
length = len(text.encode("utf-8"))
else:
length = len(text)
diff --git a/t/processing_test.py b/t/processing_test.py
index 70b1000..7208374 100644
--- a/t/processing_test.py
+++ b/t/processing_test.py
@@ -1,3 +1,4 @@
+# coding=utf-8
from . import VT100Test
class ProcessingTest(VT100Test):
diff --git a/t/text_test.py b/t/text_test.py
index c73801d..6a3add0 100644
--- a/t/text_test.py
+++ b/t/text_test.py
@@ -1,3 +1,4 @@
+# coding=utf-8
from . import VT100Test
class TextTest(VT100Test):
@@ -16,11 +17,11 @@ class TextTest(VT100Test):
assert self.vt.cell(0, 0).contents() == "c"
assert self.vt.cell(0, 1).contents() == "a"
assert self.vt.cell(0, 2).contents() == "f"
- assert self.vt.cell(0, 3).contents() == "é"
+ assert self.vt.cell(0, 3).contents() == u"é"
assert self.vt.cell(0, 4).contents() == ""
assert self.vt.cell(1, 0).contents() == ""
- assert self.vt.get_string_plaintext(0, 0, 23, 79) == 'café' + ('\n' * 24)
- assert self.vt.get_string_plaintext(0, 0, 500, 500) == 'café' + ('\n' * 24)
+ assert self.vt.get_string_plaintext(0, 0, 23, 79) == u'café' + ('\n' * 24)
+ assert self.vt.get_string_plaintext(0, 0, 500, 500) == u'café' + ('\n' * 24)
def test_newlines(self):
self.process("f\r\noo\r\nood")
@@ -41,29 +42,29 @@ class TextTest(VT100Test):
def test_wide(self):
self.process("aデbネ")
assert self.vt.cell(0, 0).contents() == "a"
- assert self.vt.cell(0, 1).contents() == "デ"
+ assert self.vt.cell(0, 1).contents() == u"デ"
assert self.vt.cell(0, 2).contents() == ""
assert self.vt.cell(0, 3).contents() == "b"
- assert self.vt.cell(0, 4).contents() == "ネ"
+ assert self.vt.cell(0, 4).contents() == u"ネ"
assert self.vt.cell(0, 5).contents() == ""
assert self.vt.cell(0, 6).contents() == ""
assert self.vt.cell(1, 0).contents() == ""
print(self.vt.get_string_plaintext(0, 0, 0, 50))
- assert self.vt.get_string_plaintext(0, 0, 23, 79) == 'aデbネ' + ('\n' * 24)
- assert self.vt.get_string_plaintext(0, 0, 500, 500) == 'aデbネ' + ('\n' * 24)
+ assert self.vt.get_string_plaintext(0, 0, 23, 79) == u'aデbネ' + ('\n' * 24)
+ assert self.vt.get_string_plaintext(0, 0, 500, 500) == u'aデbネ' + ('\n' * 24)
def test_combining(self):
self.process("a")
assert self.vt.cell(0, 0).contents() == "a"
- self.process("\u0301")
- assert self.vt.cell(0, 0).contents() == "á"
+ self.process(u"\u0301".encode('utf-8'))
+ assert self.vt.cell(0, 0).contents() == u"á"
self.process("\033[20;20Habcdefg")
assert self.vt.get_string_plaintext(19, 19, 19, 26) == "abcdefg"
- self.process("\033[20;25H\u0301")
- assert self.vt.get_string_plaintext(19, 19, 19, 26) == "abcdéfg"
+ self.process(u"\033[20;25H\u0301".encode('utf-8'))
+ assert self.vt.get_string_plaintext(19, 19, 19, 26) == u"abcdéfg"
self.process("\033[10;78Haaa")
assert self.vt.cell(9, 79).contents() == "a"
- self.process("\r\n\u0301")
+ self.process(u"\r\n\u0301".encode('utf-8'))
assert self.vt.cell(9, 79).contents() == "a"
assert self.vt.cell(10, 0).contents() == ""
diff --git a/vt100/__init__.py b/vt100/__init__.py
index 0f07318..a07755d 100644
--- a/vt100/__init__.py
+++ b/vt100/__init__.py
@@ -176,7 +176,7 @@ class vt100(object):
col_end = min(max(col_end, 0), self._cols - 1)
return vt100_raw.get_string_formatted(
addressof(self._screen), row_start, col_start, row_end, col_end
- )
+ ).decode('utf-8')
def get_string_plaintext(self, row_start, col_start, row_end, col_end):
row_start = min(max(row_start, 0), self._rows - 1)
@@ -185,7 +185,7 @@ class vt100(object):
col_end = min(max(col_end, 0), self._cols - 1)
return vt100_raw.get_string_plaintext(
addressof(self._screen), row_start, col_start, row_end, col_end
- )
+ ).decode('utf-8')
def cell(self, row, col):
if row < 0 or row >= self._rows or col < 0 or col >= self._cols:
diff --git a/vt100module.c b/vt100module.c
index 1eb8f37..9c44ae8 100644
--- a/vt100module.c
+++ b/vt100module.c
@@ -76,7 +76,11 @@ static PyObject *py_vt100_get_string_formatted(PyObject *self, PyObject *args)
vt100_screen_get_string_formatted(vt, &start, &end, &outstr, &outlen);
+#if PY_MAJOR_VERSION == 3
+ return Py_BuildValue("y#", outstr, outlen);
+#else
return Py_BuildValue("s#", outstr, outlen);
+#endif
}
static PyObject *py_vt100_get_string_plaintext(PyObject *self, PyObject *args)
@@ -92,7 +96,11 @@ static PyObject *py_vt100_get_string_plaintext(PyObject *self, PyObject *args)
vt100_screen_get_string_plaintext(vt, &start, &end, &outstr, &outlen);
+#if PY_MAJOR_VERSION == 3
+ return Py_BuildValue("y#", outstr, outlen);
+#else
return Py_BuildValue("s#", outstr, outlen);
+#endif
}
static PyObject *py_vt100_delete(PyObject *self, PyObject *args)