about summary refs log tree commit diff homepage
path: root/_libs/postprocess
diff options
context:
space:
mode:
authorNguyễn Gia Phong <mcsinyx@disroot.org>2021-12-31 23:14:08 +0700
committerNguyễn Gia Phong <mcsinyx@disroot.org>2021-12-31 23:14:08 +0700
commitcb35d1b5811aac349fd4d09bc3c0d666bd7ebeae (patch)
tree242ca2b505ff2cc5635ceba6dd72624bf073a16e /_libs/postprocess
parent3d1c6df4d779caf89590e7911e78c90c1473af4b (diff)
downloadsite-cb35d1b5811aac349fd4d09bc3c0d666bd7ebeae.tar.gz
Improve dependency injection
Diffstat (limited to '_libs/postprocess')
-rwxr-xr-x_libs/postprocess42
1 files changed, 42 insertions, 0 deletions
diff --git a/_libs/postprocess b/_libs/postprocess
new file mode 100755
index 0000000..8416d3b
--- /dev/null
+++ b/_libs/postprocess
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+# Minify HTML and CSS, patch HTML and RSS and remove JS
+# Copyright (C) 2021  Nguyễn Gia Phong
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+import re
+from contextlib import suppress
+from pathlib import Path
+from shutil import rmtree
+
+from css_html_js_minify import html_minify, process_single_css_file
+
+FOOTNOTES_START = re.compile('(<p>)?\s*<table')
+FOOTNOTES_END = re.compile('</table>\s*(</p>)?')
+
+
+def fix_footnotes(html):
+    """Work around https://github.com/tlienart/Franklin.jl/issues/936"""
+    return FOOTNOTES_START.sub('<table', FOOTNOTES_END.sub('</table>', html))
+
+
+site = Path(__file__).parent.parent / '__site'
+process_single_css_file(site/'css'/'style.css', overwrite=True)
+for html in site.rglob('*.html'):
+    print('Minifying and fixing up', html)
+    html.write_text(fix_footnotes(html_minify(html.read_text())))
+for rss in site.rglob('feed.xml'):
+    print('Fixing up', rss)
+    rss.write_text(fix_footnotes(rss.read_text()))
+with suppress(FileNotFoundError): rmtree(site/'libs')