From 62af97acf1aa92eda881c754ae0cc6876d3a5ede Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Wed, 7 Jan 2026 02:56:17 +0900 Subject: Improve docker image structure --- filters/html-converters/md2html | 37 +++++++++++++++++++++++++++++++++++++ filters/syntax-material.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100755 filters/html-converters/md2html create mode 100755 filters/syntax-material.py (limited to 'filters') diff --git a/filters/html-converters/md2html b/filters/html-converters/md2html new file mode 100755 index 0000000..571c8d7 --- /dev/null +++ b/filters/html-converters/md2html @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +import io +import sys + +import markdown +from markdown.extensions.toc import TocExtension + +sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding="utf-8") +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8") + +sys.stdout.write("
") +sys.stdout.flush() + +try: + markdown.markdownFromFile( + output_format="html5", + extensions=[ + "markdown.extensions.fenced_code", + "markdown.extensions.codehilite", + "markdown.extensions.tables", + "markdown.extensions.sane_lists", + "markdown.extensions.admonition", + TocExtension(anchorlink=True, permalink=True), + ], + extension_configs={ + "markdown.extensions.codehilite": { + "css_class": "highlight", + "guess_lang": False, + } + }, + ) +except Exception as e: + sys.stdout.write(f"

Error rendering markdown: {e}

") + sys.stdin.seek(0) + sys.stdout.write(f"
{sys.stdin.read()}
") + +sys.stdout.write("
") diff --git a/filters/syntax-material.py b/filters/syntax-material.py new file mode 100755 index 0000000..3176691 --- /dev/null +++ b/filters/syntax-material.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +import sys + +from pygments import highlight +from pygments.formatters import HtmlFormatter +from pygments.lexers import get_lexer_for_filename, guess_lexer +from pygments.util import ClassNotFound + + +def main(): + filename = sys.argv[-1] if len(sys.argv) > 1 else "stdin" + + try: + data = sys.stdin.read() + except Exception: + return + + try: + lexer = get_lexer_for_filename(filename) + except ClassNotFound: + try: + lexer = guess_lexer(data) + except ClassNotFound: + sys.stdout.write(f"
{data}
") + return + + formatter = HtmlFormatter(style="default", nowrap=True, classprefix="hl-") + + try: + sys.stdout.write("") + highlight(data, lexer, formatter, sys.stdout) + except BrokenPipeError: + pass + + +if __name__ == "__main__": + main() -- cgit v1.2.3