Skip to content

Commit f4da1a2

Browse files
committed
More robust conversion to unicode
Fixes #72.
1 parent d0fa020 commit f4da1a2

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

cldoc/utf8.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
def makeutf8(s):
66
if not isinstance(s, unicode):
77
if hasattr(s, '__unicode__'):
8-
return unicode(s)
8+
if isinstance(s, str) or isinstance(s, buffer):
9+
return unicode(s, 'utf-8')
10+
else:
11+
return unicode(s)
912

1013
return str(s).decode('utf-8')
1114

@@ -25,8 +28,8 @@ def makeutf8(s):
2528
string = basecls
2629

2730
class utf8(string):
28-
def __init__(self, s):
29-
super(utf8, self).__init__(makeutf8(s))
31+
def __new__(cls, s):
32+
return super(utf8, cls).__new__(cls, makeutf8(s))
3033

3134
def __str__(self):
3235
if not isinstance(self, str):

tests/input/utf8.hh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/* Copyright © */
2+
class A
3+
{
4+
};

tests/output/utf8-A.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version='1.0' encoding='utf-8'?>
2+
<class id="A" name="A" xmlns="http://jessevdk.github.com/cldoc/1.0">
3+
<brief>Copyright ©</brief>
4+
</class>

tests/output/utf8-index.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version='1.0' encoding='utf-8'?>
2+
<index xmlns="http://jessevdk.github.com/cldoc/1.0">
3+
<class name="A" ref="A#A">
4+
<brief>Copyright ©</brief>
5+
</class>
6+
</index>

0 commit comments

Comments
 (0)