aboutsummaryrefslogtreecommitdiff
path: root/filters
diff options
context:
space:
mode:
Diffstat (limited to 'filters')
-rwxr-xr-xfilters/html-converters/md2html37
-rwxr-xr-xfilters/syntax-material.py37
2 files changed, 74 insertions, 0 deletions
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 @@
1#!/usr/bin/env python3
2import io
3import sys
4
5import markdown
6from markdown.extensions.toc import TocExtension
7
8sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding="utf-8")
9sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
10
11sys.stdout.write("<div class='markdown-body'>")
12sys.stdout.flush()
13
14try:
15 markdown.markdownFromFile(
16 output_format="html5",
17 extensions=[
18 "markdown.extensions.fenced_code",
19 "markdown.extensions.codehilite",
20 "markdown.extensions.tables",
21 "markdown.extensions.sane_lists",
22 "markdown.extensions.admonition",
23 TocExtension(anchorlink=True, permalink=True),
24 ],
25 extension_configs={
26 "markdown.extensions.codehilite": {
27 "css_class": "highlight",
28 "guess_lang": False,
29 }
30 },
31 )
32except Exception as e:
33 sys.stdout.write(f"<p>Error rendering markdown: {e}</p>")
34 sys.stdin.seek(0)
35 sys.stdout.write(f"<pre>{sys.stdin.read()}</pre>")
36
37sys.stdout.write("</div>")
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 @@
1#!/usr/bin/env python3
2import sys
3
4from pygments import highlight
5from pygments.formatters import HtmlFormatter
6from pygments.lexers import get_lexer_for_filename, guess_lexer
7from pygments.util import ClassNotFound
8
9
10def main():
11 filename = sys.argv[-1] if len(sys.argv) > 1 else "stdin"
12
13 try:
14 data = sys.stdin.read()
15 except Exception:
16 return
17
18 try:
19 lexer = get_lexer_for_filename(filename)
20 except ClassNotFound:
21 try:
22 lexer = guess_lexer(data)
23 except ClassNotFound:
24 sys.stdout.write(f"<pre>{data}</pre>")
25 return
26
27 formatter = HtmlFormatter(style="default", nowrap=True, classprefix="hl-")
28
29 try:
30 sys.stdout.write("<style>.hl- { display: inline; }</style>")
31 highlight(data, lexer, formatter, sys.stdout)
32 except BrokenPipeError:
33 pass
34
35
36if __name__ == "__main__":
37 main()