]> git.scottworley.com Git - paperdoorknob/blame - htmlfilter.py
Reduce the number of places we keep our version number: 2 → 1
[paperdoorknob] / htmlfilter.py
CommitLineData
929db576
SW
1# paperdoorknob: Print glowfic
2#
3# This program is free software: you can redistribute it and/or modify it
4# under the terms of the GNU General Public License as published by the
5# Free Software Foundation, version 3.
6
7
8import re
9
10from typing import Callable, List, Tuple
11
12
13HTMLFilters: List[Tuple[str, Callable[[bytes], bytes]]] = [
14 ("NoNBSP", lambda x: re.sub(b"( |\xc2\xa0)", b" ", x)),
15]
16
17
18class HTMLFilterError(Exception):
19 pass
20
21
22def ApplyHTMLFilters(filter_list: str, data: bytes) -> bytes:
23 for filter_name in filter_list.split(','):
24 filters = [f for (name, f) in HTMLFilters if name == filter_name]
25 if len(filters) == 0:
26 raise HTMLFilterError(f"Unknown HTML filter: {filter_name}")
27 if len(filters) > 1:
28 raise HTMLFilterError(
29 f"Multiple HTML filters with the same name!?: {filter_name}")
30 data = filters[0](data)
31 return data