# paperdoorknob: Print glowfic # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, version 3. import re from typing import Callable, List, Tuple HTMLFilters: List[Tuple[str, Callable[[bytes], bytes]]] = [ ("NoNBSP", lambda x: re.sub(b"( |\xc2\xa0)", b" ", x)), ] class HTMLFilterError(Exception): pass def ApplyHTMLFilters(filter_list: str, data: bytes) -> bytes: for filter_name in filter_list.split(','): filters = [f for (name, f) in HTMLFilters if name == filter_name] if len(filters) == 0: raise HTMLFilterError(f"Unknown HTML filter: {filter_name}") if len(filters) > 1: raise HTMLFilterError( f"Multiple HTML filters with the same name!?: {filter_name}") data = filters[0](data) return data