]>
git.scottworley.com Git - paperdoorknob/blob - domfilter.py
1 # paperdoorknob: Print glowfic
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.
8 from typing
import Any
, Callable
, List
, Tuple
10 from bs4
.element
import Tag
13 def _changeTag(tag
: Tag
, new_name
: str) -> Tag
:
18 DOMFilters
: List
[Tuple
[str, Callable
[[Tag
], Any
]]] = [
19 ("Strike", lambda x
: [_changeTag(span
, 's')
20 for span
in x
.find_all("span", style
="text-decoration: line-through;")]),
24 class DOMFilterError(Exception):
28 def ApplyDOMFilters(filter_list
: str, tag
: Tag
) -> None:
29 for filter_name
in filter_list
.split(','):
30 filters
= [f
for (name
, f
) in DOMFilters
if name
== filter_name
]
32 raise DOMFilterError(f
"Unknown DOM filter: {filter_name}")
35 f
"Multiple DOM filters with the same name!?: {filter_name}")