From 24e866347ec2355c35e0e39e317946b9b833d2ed Mon Sep 17 00:00:00 2001 From: Scott Worley <scottworley@scottworley.com> Date: Fri, 29 Dec 2023 11:46:36 -0800 Subject: [PATCH] Support strikethrough --- domfilter.py | 7 +++++++ domfilter_test.py | 12 ++++++++++++ paperdoorknob.py | 1 + 3 files changed, 20 insertions(+) diff --git a/domfilter.py b/domfilter.py index 22f96a1..e1095f0 100644 --- a/domfilter.py +++ b/domfilter.py @@ -10,9 +10,16 @@ from typing import Any, Callable, List, Tuple from bs4.element import Tag +def _changeTag(tag: Tag, new_name: str) -> Tag: + tag.name = new_name + return tag + + DOMFilters: List[Tuple[str, Callable[[Tag], Any]]] = [ ("NoEdit", lambda x: [eb.decompose() for eb in x.find_all("div", class_="post-edit-box")]), ("NoFooter", lambda x: [foot.decompose() for foot in x.find_all("div", class_="post-footer")]), + ("Strike", lambda x: [_changeTag(span, 's') + for span in x.find_all("span", style="text-decoration: line-through;")]), ] diff --git a/domfilter_test.py b/domfilter_test.py index c3c8ee2..8daca20 100644 --- a/domfilter_test.py +++ b/domfilter_test.py @@ -21,6 +21,11 @@ class TestDOMFilters(unittest.TestCase): This is glowfic <div class="post-footer">This is the footer</div> </div>''', 'html.parser') + self._strike = BeautifulSoup(b''' + <div class="post-content"> + <p><span style="text-decoration: line-through;">Abandon hope and endure.</span></p> + <p>No. Win.</p> + </div>''', 'html.parser') def testStripFooters(self) -> None: ApplyDOMFilters("NoFooter", self._html) @@ -37,6 +42,13 @@ class TestDOMFilters(unittest.TestCase): self.assertEqual(list(self._html.stripped_strings), ["This is glowfic"]) + def testStrike(self) -> None: + ApplyDOMFilters('Strike', self._strike) + s = self._strike.find_all('s') + self.assertEqual(len(s), 1) + self.assertEqual(list(s[0].stripped_strings), + ['Abandon hope and endure.']) + if __name__ == '__main__': unittest.main() diff --git a/paperdoorknob.py b/paperdoorknob.py index b364f4d..0da6d97 100644 --- a/paperdoorknob.py +++ b/paperdoorknob.py @@ -21,6 +21,7 @@ def process(spec: Spec) -> None: \\usepackage{booktabs} \\usepackage{graphicx} \\usepackage{longtable} +\\usepackage{soul} \\usepackage{varwidth} \\usepackage{wrapstuff} ''') -- 2.47.2