1
0
mirror of synced 2024-11-22 09:14:23 +01:00

Do not display control characters in output

Kudos to Sherry Taylor for reporting this issue ♥
This commit is contained in:
jvoisin 2018-11-07 21:54:34 +01:00
parent 04bb8c8ccf
commit 8ff57c5803
2 changed files with 11 additions and 1 deletions

10
mat2
View File

@ -6,6 +6,7 @@ import sys
import mimetypes import mimetypes
import argparse import argparse
import logging import logging
import unicodedata
try: try:
from libmat2 import parser_factory, UNSUPPORTED_EXTENSIONS from libmat2 import parser_factory, UNSUPPORTED_EXTENSIONS
@ -83,6 +84,15 @@ def __print_meta(filename: str, metadata: dict, depth: int=1):
if isinstance(v, dict): if isinstance(v, dict):
__print_meta(k, v, depth+1) __print_meta(k, v, depth+1)
continue continue
# Remove control characters
# We might use 'Cc' instead of 'C', but better safe than sorry
# https://www.unicode.org/reports/tr44/#GC_Values_Table
try:
v = ''.join(ch for ch in v if not unicodedata.category(ch).startswith('C'))
except TypeError:
pass # for things that aren't iterable
try: # FIXME this is ugly. try: # FIXME this is ugly.
print(padding + " %s: %s" % (k, v)) print(padding + " %s: %s" % (k, v))
except UnicodeEncodeError: except UnicodeEncodeError:

View File

@ -121,7 +121,7 @@ class TestGetMeta(unittest.TestCase):
proc = subprocess.Popen(mat2_binary + ['--show', './tests/data/dirty.pdf'], proc = subprocess.Popen(mat2_binary + ['--show', './tests/data/dirty.pdf'],
stdout=subprocess.PIPE) stdout=subprocess.PIPE)
stdout, _ = proc.communicate() stdout, _ = proc.communicate()
self.assertIn(b'producer: pdfTeX-1.40.14', stdout) self.assertIn(b'Producer: pdfTeX-1.40.14', stdout)
def test_png(self): def test_png(self):
proc = subprocess.Popen(mat2_binary + ['--show', './tests/data/dirty.png'], proc = subprocess.Popen(mat2_binary + ['--show', './tests/data/dirty.png'],