Add a variant of cleanBin that escapes newlines and tabs.
Use this to fix the hex display option.
This commit is contained in:
parent
690f797da2
commit
e9ac4bef20
|
@ -54,11 +54,18 @@ def isXML(s):
|
|||
return False
|
||||
|
||||
|
||||
def cleanBin(s):
|
||||
def cleanBin(s, fixspacing=False):
|
||||
"""
|
||||
Cleans binary data to make it safe to display. If fixspacing is True,
|
||||
tabs, newlines and so forth will be maintained, if not, they will be
|
||||
replaced with a placeholder.
|
||||
"""
|
||||
parts = []
|
||||
for i in s:
|
||||
o = ord(i)
|
||||
if (o > 31 and o < 127) or i in "\n\r\t":
|
||||
if (o > 31 and o < 127):
|
||||
parts.append(i)
|
||||
elif i in "\n\r\t" and not fixspacing:
|
||||
parts.append(i)
|
||||
else:
|
||||
parts.append(".")
|
||||
|
@ -147,7 +154,7 @@ def hexdump(s):
|
|||
x += " "
|
||||
x += " ".join(" " for i in range(16 - len(part)))
|
||||
parts.append(
|
||||
(o, x, cleanBin(part))
|
||||
(o, x, cleanBin(part, True))
|
||||
)
|
||||
return parts
|
||||
|
||||
|
|
|
@ -224,7 +224,17 @@ class u_parse_content_type(libpry.AutoTree):
|
|||
assert v == ('text', 'html', {'charset': 'UTF-8'})
|
||||
|
||||
|
||||
class u_cleanBin(libpry.AutoTree):
|
||||
def test_simple(self):
|
||||
assert utils.cleanBin("one") == "one"
|
||||
assert utils.cleanBin("\00ne") == ".ne"
|
||||
assert utils.cleanBin("\nne") == "\nne"
|
||||
assert utils.cleanBin("\nne", True) == ".ne"
|
||||
|
||||
|
||||
|
||||
tests = [
|
||||
u_cleanBin(),
|
||||
u_parse_content_type(),
|
||||
uformat_timestamp(),
|
||||
uisBin(),
|
||||
|
|
Loading…
Reference in New Issue