summaryrefslogtreecommitdiff
path: root/blog
diff options
context:
space:
mode:
authorDmitry Ilvokhin <d@ilvokhin.com>2026-10-10 20:50:26 +0100
committerDmitry Ilvokhin <d@ilvokhin.com>2026-10-10 20:50:26 +0100
commitd40055bbda27915d1dbb67f5f13b1fef707cd07a (patch)
treedfaf1ab57b8738232c8b9de22c24004be7b1a6f9 /blog
parenta26f3db38f3b5b5a347afdfdcedb4dfc75d6a907 (diff)
downloadblog-d40055bbda27915d1dbb67f5f13b1fef707cd07a.tar.gz
blog-d40055bbda27915d1dbb67f5f13b1fef707cd07a.tar.bz2
blog-d40055bbda27915d1dbb67f5f13b1fef707cd07a.zip
Support code formattingHEADmaster
Diffstat (limited to 'blog')
-rw-r--r--blog/blog.py3
-rw-r--r--blog/highlight.py23
-rw-r--r--blog/render.py14
3 files changed, 38 insertions, 2 deletions
diff --git a/blog/blog.py b/blog/blog.py
index 4b9a345..8528b82 100644
--- a/blog/blog.py
+++ b/blog/blog.py
@@ -11,6 +11,7 @@ from jinja2 import Template, Environment, FileSystemLoader, select_autoescape
from post import Post
from feed import Feed
from atom import Atom
+from highlight import Highlight
def recreate_workdir(basedir: str) -> None:
@@ -44,6 +45,8 @@ def generate_blog() -> None:
workdir = "remote"
recreate_workdir(workdir)
+ Highlight.generate(workdir)
+
for post in posts:
post.generate(workdir)
diff --git a/blog/highlight.py b/blog/highlight.py
new file mode 100644
index 0000000..e4d7b92
--- /dev/null
+++ b/blog/highlight.py
@@ -0,0 +1,23 @@
+import os
+from typing import cast, Callable
+
+from pygments.formatters import HtmlFormatter
+
+
+def get_style_defs() -> str:
+ # Workaround to avoid mypy to complain about untyped
+ # get_style_defs() call.
+ formatter = HtmlFormatter(style="bw")
+ selector = ".highlight"
+ f = cast(Callable[[str], str], formatter.get_style_defs)
+ return f(selector)
+
+
+class Highlight(object):
+ @staticmethod
+ def generate(basedir: str) -> None:
+ highligh = os.path.join(basedir, "highlight.css")
+
+ with open(highligh, mode='w') as f:
+ style = get_style_defs()
+ f.write(style)
diff --git a/blog/render.py b/blog/render.py
index ad06602..9cda36a 100644
--- a/blog/render.py
+++ b/blog/render.py
@@ -15,5 +15,15 @@ def write_file_content(filename: str, data: str) -> None:
def to_html(filename: str) -> str:
text = read_file_content(filename)
- return markdown.markdown(text, extensions=["fenced_code", "footnotes",
- TocExtension(anchorlink=True)])
+ return markdown.markdown(
+ text,
+ extensions=[
+ "fenced_code",
+ "footnotes",
+ "codehilite",
+ TocExtension(anchorlink=True)
+ ],
+ extension_configs={
+ "codehilite": {"css_class": "highlight"}
+ },
+ )