+# 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.
+
+
+from abc import ABC, abstractmethod
+import subprocess
+
+from bs4.element import Tag
+
+
+class Texifier(ABC):
+ @abstractmethod
+ def texify(self, html: Tag) -> bytes:
+ raise NotImplementedError()
+
+
+class PandocTexifier(Texifier):
+
+ def __init__(self, pandoc_path: str) -> None:
+ self._pandoc_path = pandoc_path
+
+ def texify(self, html: Tag) -> bytes:
+ return subprocess.run([self._pandoc_path, '--from=html', '--to=latex'],
+ input=html.encode(),
+ stdout=subprocess.PIPE,
+ check=True).stdout