diff options
Diffstat (limited to 'filters')
-rwxr-xr-x | filters/html-converters/md2html | 30 | ||||
-rwxr-xr-x | filters/syntax-highlighting.py | 14 | ||||
-rwxr-xr-x | filters/syntax-highlighting.sh | 104 |
3 files changed, 104 insertions, 44 deletions
diff --git a/filters/html-converters/md2html b/filters/html-converters/md2html index 59f43a8..627808a 100755 --- a/filters/html-converters/md2html +++ b/filters/html-converters/md2html @@ -4,6 +4,11 @@ import sys import io from pygments.formatters import HtmlFormatter from markdown.extensions.toc import TocExtension + +# The dark style is automatically selected if the browser is in dark mode +light_style='pastie' +dark_style='monokai' + sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8') sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') sys.stdout.write(''' @@ -283,10 +288,31 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div# background-color: transparent; border: none; } +@media only all and (prefers-color-scheme: dark) { +.markdown-body a.absent { color: #f33; } +.markdown-body h1 .mini-icon-link, .markdown-body h2 .mini-icon-link, .markdown-body h3 .mini-icon-link, .markdown-body h4 .mini-icon-link, .markdown-body h5 .mini-icon-link, .markdown-body h6 .mini-icon-link { color: #eee; } +div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#cgit .markdown-body h3 a.toclink, div#cgit .markdown-body h4 a.toclink, div#cgit .markdown-body h5 a.toclink, div#cgit .markdown-body h6 a.toclink { color: #eee; } +.markdown-body h1 { color: #eee; } +.markdown-body h2 { border-bottom-color: #333; color: #eee; } +.markdown-body h6 { color: #888; } +.markdown-body hr { border-color: #333; } +.markdown-body blockquote { border-left-color: #222; color: #888; } +.markdown-body table th, .markdown-body table td { border-color: #333; } +.markdown-body table tr { border-top-color: #333; background-color: #111; } +.markdown-body table tr:nth-child(2n) { background-color: #070707; } +.markdown-body span.frame span span { color: #ccc; } +.markdown-body code, .markdown-body tt { border-color: #151515; background-color: #070707; } +.markdown-body .highlight pre, .markdown-body pre { background-color: #070707; border-color: #333; } ''') -sys.stdout.write(HtmlFormatter(style='pastie').get_style_defs('.highlight')) +sys.stdout.write(HtmlFormatter(style=dark_style).get_style_defs('.highlight')) sys.stdout.write(''' -</style> +} +@media (prefers-color-scheme: light) { +''') +sys.stdout.write(HtmlFormatter(style=light_style).get_style_defs('.highlight')) +sys.stdout.write(''' +} +</style> ''') sys.stdout.write("<div class='markdown-body'>") sys.stdout.flush() diff --git a/filters/syntax-highlighting.py b/filters/syntax-highlighting.py index e912594..f2c0fe1 100755 --- a/filters/syntax-highlighting.py +++ b/filters/syntax-highlighting.py @@ -29,12 +29,16 @@ from pygments.lexers import guess_lexer from pygments.lexers import guess_lexer_for_filename from pygments.formatters import HtmlFormatter +# The dark style is automatically selected if the browser is in dark mode +light_style='pastie' +dark_style='monokai' sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='replace') sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') data = sys.stdin.read() filename = sys.argv[1] -formatter = HtmlFormatter(style='pastie', nobackground=True) +light_formatter = HtmlFormatter(style=light_style, nobackground=True) +dark_formatter = HtmlFormatter(style=dark_style, nobackground=True) try: lexer = guess_lexer_for_filename(filename, data) @@ -50,6 +54,10 @@ except TypeError: # highlight! :-) # printout pygments' css definitions as well sys.stdout.write('<style>') -sys.stdout.write(formatter.get_style_defs('.highlight')) +sys.stdout.write('\n@media only all and (prefers-color-scheme: dark) {\n') +sys.stdout.write(dark_formatter.get_style_defs('.highlight')) +sys.stdout.write('\n}\n@media (prefers-color-scheme: light) {\n') +sys.stdout.write(light_formatter.get_style_defs('.highlight')) +sys.stdout.write('\n}\n') sys.stdout.write('</style>') -sys.stdout.write(highlight(data, lexer, formatter, outfile=None)) +sys.stdout.write(highlight(data, lexer, light_formatter, outfile=None)) diff --git a/filters/syntax-highlighting.sh b/filters/syntax-highlighting.sh index 840bc34..0429b0f 100755 --- a/filters/syntax-highlighting.sh +++ b/filters/syntax-highlighting.sh @@ -25,6 +25,20 @@ # table.blob .kwb { color:#830000; } # table.blob .kwc { color:#000000; font-weight:bold; } # table.blob .kwd { color:#010181; } +# @media only all and (prefers-color-scheme: dark) { /* cgit addition for dark mode */ +# table.blob .num { color:#ff814f; } +# table.blob .esc { color:#f60; } +# table.blob .str { color:#cc0; } +# table.blob .dstr { color:#ffff7e; } +# table.blob .slc { color:#7f7c7f; } +# table.blob .com { color:#7e7c7e; } +# table.blob .dir { color:#7dff7d; } +# table.blob .sym { color:#eeeeee; } +# table.blob .kwa { color:#bb0; } +# table.blob .kwb { color:#0a0; } +# table.blob .kwc { color:#eeeeee; } +# table.blob .kwd { color:#7e7efe; } +# } # # # Style definition file generated by highlight 2.6.14, http://www.andre-simon.de/ @@ -45,45 +59,57 @@ # .hl.kwb { color:#830000; } # .hl.kwc { color:#000000; font-weight:bold; } # .hl.kwd { color:#010181; } -# -# -# Style definition file generated by highlight 3.8, http://www.andre-simon.de/ -# -# body.hl { background-color:#e0eaee; } -# pre.hl { color:#000000; background-color:#e0eaee; font-size:10pt; font-family:'Courier New';} -# .hl.num { color:#b07e00; } -# .hl.esc { color:#ff00ff; } -# .hl.str { color:#bf0303; } -# .hl.pps { color:#818100; } -# .hl.slc { color:#838183; font-style:italic; } -# .hl.com { color:#838183; font-style:italic; } -# .hl.ppc { color:#008200; } -# .hl.opt { color:#000000; } -# .hl.lin { color:#555555; } -# .hl.kwa { color:#000000; font-weight:bold; } -# .hl.kwb { color:#0057ae; } -# .hl.kwc { color:#000000; font-weight:bold; } -# .hl.kwd { color:#010181; } -# -# -# Style definition file generated by highlight 3.13, http://www.andre-simon.de/ -# -# body.hl { background-color:#e0eaee; } -# pre.hl { color:#000000; background-color:#e0eaee; font-size:10pt; font-family:'Courier New',monospace;} -# .hl.num { color:#b07e00; } -# .hl.esc { color:#ff00ff; } -# .hl.str { color:#bf0303; } -# .hl.pps { color:#818100; } -# .hl.slc { color:#838183; font-style:italic; } -# .hl.com { color:#838183; font-style:italic; } -# .hl.ppc { color:#008200; } -# .hl.opt { color:#000000; } -# .hl.ipl { color:#0057ae; } -# .hl.lin { color:#555555; } -# .hl.kwa { color:#000000; font-weight:bold; } -# .hl.kwb { color:#0057ae; } -# .hl.kwc { color:#000000; font-weight:bold; } -# .hl.kwd { color:#010181; } +# @media only all and (prefers-color-scheme: dark) { /* cgit addition for dark mode */ +# pre.hl { color:#eeeeee; background-color:#111; } +# .hl.num { color:#ff814f; } +# .hl.esc { color:#f60; } +# .hl.str { color:#cc0; } +# .hl.dstr { color:#ffff7e; } +# .hl.slc { color:#7f7c7f; } +# .hl.com { color:#7e7c7e; } +# .hl.dir { color:#7dff7d; } +# .hl.sym { color:#eeeeee; } +# .hl.line { color:#aaaaaa; } +# .hl.mark { background-color:#444400; } +# .hl.kwa { color:#bb0; } +# .hl.kwb { color:#a0a; } +# .hl.kwc { color:#eeeeee; } +# .hl.kwd { color:#7e7efe; } +# } +# +# +# Style definition file generated by highlight 3.8 / 3.13 / 3.41, http://www.andre-simon.de/ +# +# table.blob .num { color:#b07e00; } +# table.blob .esc { color:#ff00ff; } +# table.blob .str { color:#bf0303; } +# table.blob .pps { color:#818100; } +# table.blob .slc { color:#838183; font-style:italic; } +# table.blob .com { color:#838183; font-style:italic; } +# table.blob .ppc { color:#008200; } +# table.blob .opt { color:#000000; } +# table.blob .ipl { color:#0057ae; } +# table.blob .lin { color:#555555; } +# table.blob .kwa { color:#000000; font-weight:bold; } +# table.blob .kwb { color:#0057ae; } +# table.blob .kwc { color:#000000; font-weight:bold; } +# table.blob .kwd { color:#010181; } +# @media only all and (prefers-color-scheme: dark) { /* cgit addition for dark mode */ +# table.blob .num { color:#ff814f; } +# table.blob .esc { color:#f60; } +# table.blob .str { color:#cc0; } +# table.blob .pps { color:#ffff7f; } +# table.blob .slc { color:#7f7c7f; } +# table.blob .com { color:#7e7c7e; } +# table.blob .ppc { color:#8dd; } +# table.blob .opt { color:#eeeeee; } +# table.blob .ipl { color:#51a8ff; } +# table.blob .lin { color:#aaaaaa; } +# table.blob .kwa { color:#bb0; } +# table.blob .kwb { color:#0a0; } +# table.blob .kwc { color:#eeeeee; } +# table.blob .kwd { color:#7e7efe; } +# } # # # The following environment variables can be used to retrieve the configuration |