FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cefpython/cefpython/string_utils.pyx at cefpython31 · cleverphp/cefpython · GitHub
cleverphp
cefpython
Repository navigation
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
cefpython
/
cefpython
/
string_utils.pyx
Copy path
More file actions
More file actions
Latest commit
History
History
History
123 lines (110 loc) · 4.36 KB
Breadcrumbs
cefpython
/
cefpython
/
string_utils.pyx
Copy path
File metadata and controls
123 lines (110 loc) · 4.36 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#
Copyright (c) 2012-2014 The CEF Python authors. All rights reserved.
#
License: New BSD License.
#
Website: http://code.google.com/p/cefpython/
#
TODO: cleanup the code in string_utils.pyx and string_utils_win.pyx,
#
see this topic for a review of the code in this file, see the
#
posts by Stefan Behnel:
#
https://groups.google.com/d/topic/cython-users/VICzhVn-zPw/discussion
#
TODO: make this configurable through ApplicationSettings.
UNICODE_ENCODE_ERRORS
=
"
replace
"
BYTES_DECODE_ERRORS
=
"
replace
"
#
Any bytes/unicode encoding and decoding in cefpython should
#
be performed only using functions from this file - let's
#
keep it in one place for future fixes - see Issue 60 ("Strings
#
should be unicode by default, if bytes is required make it
#
explicit").
cdef py_string AnyToPyString(
object
value):
cdef
object
valueType
=
type
(value)
if
valueType
==
str
or
valueType
==
bytes:
return
value
elif
PY_MAJOR_VERSION
<
3
and
valueType
==
unicode
:
#
The unicode type is not defined in Python 3
return
value
else
:
return
"
"
cdef py_string CharToPyString(
const
char
*
charString):
if
PY_MAJOR_VERSION
<
3
:
return
<
bytes
>
charString
else
:
return
<
unicode
>
((
<
bytes
>
charString).decode(
g_applicationSettings[
"
string_encoding
"
],
errors
=
BYTES_DECODE_ERRORS))
#
cdef py_string CppToPyString(
#
cpp_string cppString):
#
if PY_MAJOR_VERSION < 3:
#
return <bytes>cppString
#
else:
#
return <unicode>((<bytes>cppString).decode(
#
g_applicationSettings["string_encoding"],
#
errors=BYTES_DECODE_ERRORS))
#
cdef cpp_string PyToCppString(py_string pyString) except *:
#
cdef cpp_string cppString = pyString
#
return cppString
cdef py_string CefToPyString(
ConstCefString
&
cefString):
cdef cpp_string cppString
if
cefString.empty():
return
"
"
IF
UNAME_SYSNAME
==
"
Windows
"
:
cdef wchar_t
*
wcharstr
=
<
wchar_t
*
>
cefString.c_str()
return
WidecharToPyString(wcharstr)
ELSE
:
cppString
=
cefString.ToString()
if
PY_MAJOR_VERSION
<
3
:
return
<
bytes
>
cppString
else
:
return
<
unicode
>
((
<
bytes
>
cppString).decode(
g_applicationSettings[
"
string_encoding
"
],
errors
=
BYTES_DECODE_ERRORS))
cdef
void
PyToCefString(
py_string pyString,
CefString
&
cefString
)
except
*
:
if
PY_MAJOR_VERSION
<
3
:
if
type
(pyString)
==
unicode
:
pyString
=
<
bytes
>
(pyString.encode(
g_applicationSettings[
"
string_encoding
"
],
errors
=
UNICODE_ENCODE_ERRORS))
else
:
#
The unicode type is not defined in Python 3.
if
type
(pyString)
==
str
:
pyString
=
<
bytes
>
(pyString.encode(
g_applicationSettings[
"
string_encoding
"
],
errors
=
UNICODE_ENCODE_ERRORS))
cdef cpp_string cppString
=
pyString
#
Using cefString.FromASCII() will result in DCHECK failures
#
when a non-ascii character is encountered.
cefString.FromString(cppString)
cdef CefString PyToCefStringValue(
py_string pyString
)
except
*
:
cdef CefString cefString
PyToCefString(pyString, cefString)
return
cefString
cdef
void
PyToCefStringPointer(
py_string pyString,
CefString
*
cefString
)
except
*
:
if
PY_MAJOR_VERSION
<
3
:
if
type
(pyString)
==
unicode
:
pyString
=
<
bytes
>
(pyString.encode(
g_applicationSettings[
"
string_encoding
"
],
errors
=
UNICODE_ENCODE_ERRORS))
else
:
#
The unicode type is not defined in Python 3.
if
type
(pyString)
==
str
:
pyString
=
<
bytes
>
(pyString.encode(
g_applicationSettings[
"
string_encoding
"
],
errors
=
UNICODE_ENCODE_ERRORS))
cdef cpp_string cppString
=
pyString
#
When used cefString.FromASCII(), a DCHECK failed
#
when passed a unicode string.
cefString.FromString(cppString)
cdef py_string VoidPtrToString(const
void
*
data, size_t dataLength):
if
PY_MAJOR_VERSION
<
3
:
return
<
bytes
>
((
<
char
*
>
data)[:dataLength])
else
:
return
<
unicode
>
((
<
bytes
>
(
<
char
*
>
data)[:dataLength]).decode(
g_applicationSettings[
"
string_encoding
"
],
errors
=
BYTES_DECODE_ERRORS))
Back
|
FazBrowse Home
|
New Git URL