#!/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 . 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('(

)?\s*\s*(

)?') def fix_footnotes(html): """Work around https://github.com/tlienart/Franklin.jl/issues/936""" return FOOTNOTES_START.sub('', 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')