update @ Fri 4 Nov 01:53:48 EET 2022

Signed-off-by: Ari Archer <ari.web.xyz@gmail.com>
This commit is contained in:
Ari Archer 2022-11-04 01:53:48 +02:00
parent f8db9866d3
commit 8f879c46cc
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: A50D5B4B599AF8A2
2 changed files with 41 additions and 11 deletions

View file

@ -84,7 +84,7 @@ body {
text-rendering: optimizeSpeed; text-rendering: optimizeSpeed;
} }
header > h1 { h1 {
text-align: center; text-align: center;
margin: 1em; margin: 1em;
font-size: 2em; font-size: 2em;

View file

@ -7,6 +7,7 @@ import os
import random import random
import string import string
import sys import sys
import xml.etree.ElementTree as etree
from base64 import b64decode, b64encode from base64 import b64decode, b64encode
from datetime import datetime from datetime import datetime
from glob import iglob from glob import iglob
@ -16,7 +17,7 @@ from shutil import rmtree
from tempfile import gettempdir from tempfile import gettempdir
from threading import Thread from threading import Thread
from timeit import default_timer as code_timer from timeit import default_timer as code_timer
from typing import Callable, Dict, Iterable, List, Set, Tuple, Union from typing import Any, Callable, Dict, Iterable, List, Set, Tuple, Union
from warnings import filterwarnings as filter_warnings from warnings import filterwarnings as filter_warnings
import ujson # type: ignore import ujson # type: ignore
@ -24,6 +25,7 @@ from css_html_js_minify import html_minify # type: ignore
from css_html_js_minify import process_single_css_file from css_html_js_minify import process_single_css_file
from markdown import markdown # type: ignore from markdown import markdown # type: ignore
from markdown.extensions import Extension # type: ignore from markdown.extensions import Extension # type: ignore
from markdown.inlinepatterns import InlineProcessor # type: ignore
from markdown.treeprocessors import Treeprocessor # type: ignore from markdown.treeprocessors import Treeprocessor # type: ignore
from plumbum.commands.processes import ProcessExecutionError # type: ignore from plumbum.commands.processes import ProcessExecutionError # type: ignore
from pyfzf import FzfPrompt # type: ignore from pyfzf import FzfPrompt # type: ignore
@ -248,19 +250,26 @@ def truncate_str(string: str, length: int) -> str:
return string[:length] + "..." return string[:length] + "..."
class AddHeaderLinks(Treeprocessor): class BetterHeaders(Treeprocessor):
def run(self, root): """Better headers
- Downsizes headers from h1 -> h2
- Adds header links"""
def run(self, root) -> None:
ids: List[str] = [] ids: List[str] = []
heading_sizes_em: Dict[str, Union[float, int]] = { heading_sizes_em: Dict[str, float] = {
"h1": 1.52,
"h2": 1.32, "h2": 1.32,
"h3": 1.15, "h3": 1.15,
"h4": 1, "h4": 1.0,
"h5": 0.87, "h5": 0.87,
"h6": 0.76, "h6": 0.76,
} }
for idx, elem in enumerate(root): for idx, elem in enumerate(root):
if elem.tag == "h1":
elem.tag = "h2"
if elem.tag not in heading_sizes_em: if elem.tag not in heading_sizes_em:
continue continue
@ -271,7 +280,12 @@ class AddHeaderLinks(Treeprocessor):
"div", "div",
{ {
"data-pl": "", "data-pl": "",
"style": f"font-size:{(heading_sizes_em[elem.tag] + 0.1):.2f}em", "style": f"font-size:{(heading_sizes_em[elem.tag] + 0.1):.2f}".strip(
"0"
).rstrip(
"."
)
+ "em",
}, },
) )
@ -296,10 +310,26 @@ class AddHeaderLinks(Treeprocessor):
root.insert(idx, heading_parent) root.insert(idx, heading_parent)
class AddHeaderLinksExt(Extension): class AddIDLinks(InlineProcessor):
"""Add support for <#ID> links"""
def handleMatch(self, match, data: str) -> tuple[etree.Element, Any, Any]:
link: etree.Element = etree.Element("a")
link.text = match.group(1) or "#"
link.set("href", link.text)
return link, match.start(0), match.end(0)
class AriMarkdownExts(Extension):
"""Ari-web markdown extensions"""
def extendMarkdown(self, md, key: str = "add_header_links", index: int = int(1e8)): def extendMarkdown(self, md, key: str = "add_header_links", index: int = int(1e8)):
md.registerExtension(self) md.registerExtension(self)
md.treeprocessors.register(AddHeaderLinks(md.parser), key, index)
md.treeprocessors.register(BetterHeaders(md.parser), key, index)
md.inlinePatterns.register(AddIDLinks(r"<(#.*)>", "a"), key, index)
def log(message: str, header: str = "ERROR", code: int = EXIT_ERR) -> int: def log(message: str, header: str = "ERROR", code: int = EXIT_ERR) -> int:
@ -506,7 +536,7 @@ def build(config: Dict) -> Tuple[int, Dict]:
b64decode(blog_meta["content"]).decode(), b64decode(blog_meta["content"]).decode(),
extensions=[ extensions=[
*config["py-markdown-extensions"], *config["py-markdown-extensions"],
AddHeaderLinksExt(), AriMarkdownExts(),
], ],
) )
.replace("<pre>", '<pre focusable="true" role="code" tabindex="0">') .replace("<pre>", '<pre focusable="true" role="code" tabindex="0">')