Small tweak
[kiosk.git] / file_writer.py
1 #!/usr/bin/env python3
2
3 import constants
4 import os
5
6
7 class file_writer:
8     """Helper context to write a pages file."""
9
10     def __init__(self, filename: str, *, transformations=[]):
11         self.full_filename = os.path.join(constants.pages_dir, filename)
12         self.xforms = [file_writer.remove_tricky_unicode]
13         self.xforms.extend(transformations)
14         self.f = None
15
16     @staticmethod
17     def remove_tricky_unicode(x: str) -> str:
18         try:
19             x = x.replace("\u2018", "'").replace("\u2019", "'")
20             x = x.replace("\u201c", '"').replace("\u201d", '"')
21             x = x.replace("\u2e3a", "-").replace("\u2014", "-")
22         except:
23             pass
24         return x
25
26     def write(self, data):
27         for xform in self.xforms:
28             data = xform(data)
29         self.f.write(data.encode("utf-8"))
30
31     def __enter__(self):
32         self.f = open(self.full_filename, "wb")
33         return self
34
35     def __exit__(self, exc_type, exc_value, exc_traceback):
36         self.close()
37
38     def done(self):
39         self.close()
40
41     def close(self):
42         self.f.close()
43
44
45 # Test
46 # def toupper(x):
47 #   return x.upper()
48 #
49 # with file_writer("test", transformations=[toupper]) as fw:
50 #    fw.write(u"Another test!!")