aboutsummaryrefslogtreecommitdiff
path: root/filters/html-converters
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'filters/html-converters')
-rwxr-xr-xfilters/html-converters/md2html119
1 files changed, 33 insertions, 86 deletions
diff --git a/filters/html-converters/md2html b/filters/html-converters/md2html
index 4f6ad37..c8ee7d9 100755
--- a/filters/html-converters/md2html
+++ b/filters/html-converters/md2html
@@ -1,50 +1,7 @@
-#!/usr/bin/env python3
+#!/usr/bin/env python
import markdown
-import sys
-import io
-from markdown.extensions.toc import TocExtension
-
-# Pygments' token classes, mapped onto the --syn-* custom properties that
-# cgit.css defines. The fallbacks are the palette those properties default to,
-# so that the output stays readable under a stylesheet without them.
-SYNTAX_COLORS = (
- (('k', 'kc', 'kd', 'kn', 'kr'), '--syn-keyword', '#000',
- 'font-weight: bold'),
- (('kp',), '--syn-keyword', '#000', None),
- (('kt',), '--syn-type', '#010181', None),
- (('nc', 'nf', 'nn', 'ne'), '--syn-keyword-alt', '#0057ae', None),
- (('s', 'sa', 'sb', 'sc', 'dl', 'sd', 's2', 'sh', 'sx', 'sr', 's1', 'ss'),
- '--syn-string', '#bf0303', None),
- (('se',), '--syn-escape', '#f0f', None),
- (('si',), '--syn-interpolation', '#0057ae', None),
- (('c', 'ch', 'cm', 'c1', 'cs'), '--syn-comment', '#838183',
- 'font-style: italic'),
- (('cp', 'cpf'), '--syn-preproc', '#008200', None),
- (('m', 'mb', 'mf', 'mh', 'mi', 'mo', 'il'), '--syn-number', '#b07e00',
- None),
- (('o', 'ow', 'p'), '--syn-operator', '#000', None),
- (('err',), '--syn-error', '#bf0303', None),
- (('gd',), '--red', 'red', None),
- (('gi',), '--green', 'green', None),
- (('lineno', 'linenos'), '--syn-linenum', '#555', None),
-)
-
-
-def style_defs(prefix='.highlight'):
- rules = []
- for classes, prop, fallback, extra in SYNTAX_COLORS:
- selector = ', '.join('%s .%s' % (prefix, c) for c in classes)
- decls = 'color: var(%s, %s)' % (prop, fallback)
- if extra:
- decls += '; ' + extra
- rules.append('%s { %s }' % (selector, decls))
- rules.append('%s .hll { background-color: var(--syn-mark-bg, #ffb) }'
- % prefix)
- return '\n'.join(rules) + '\n'
-
-sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
-sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
-sys.stdout.write('''
+from pygments.formatters import HtmlFormatter
+print('''
<style>
.markdown-body {
font-size: 14px;
@@ -58,7 +15,7 @@ sys.stdout.write('''
margin-bottom: 0 !important;
}
.markdown-body a.absent {
- color: var(--red-mid, #c00);
+ color: #c00;
}
.markdown-body a.anchor {
display: block;
@@ -80,32 +37,28 @@ sys.stdout.write('''
}
.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 {
display: none;
- color: var(--fg-strong, #000);
+ color: #000;
}
.markdown-body h1:hover a.anchor, .markdown-body h2:hover a.anchor, .markdown-body h3:hover a.anchor, .markdown-body h4:hover a.anchor, .markdown-body h5:hover a.anchor, .markdown-body h6:hover a.anchor {
text-decoration: none;
line-height: 1;
padding-left: 0;
margin-left: -22px;
- top: 15%;
-}
+ top: 15%}
.markdown-body h1:hover a.anchor .mini-icon-link, .markdown-body h2:hover a.anchor .mini-icon-link, .markdown-body h3:hover a.anchor .mini-icon-link, .markdown-body h4:hover a.anchor .mini-icon-link, .markdown-body h5:hover a.anchor .mini-icon-link, .markdown-body h6:hover a.anchor .mini-icon-link {
display: inline-block;
}
-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: var(--fg-strong, #000);
-}
.markdown-body h1 tt, .markdown-body h1 code, .markdown-body h2 tt, .markdown-body h2 code, .markdown-body h3 tt, .markdown-body h3 code, .markdown-body h4 tt, .markdown-body h4 code, .markdown-body h5 tt, .markdown-body h5 code, .markdown-body h6 tt, .markdown-body h6 code {
font-size: inherit;
}
.markdown-body h1 {
font-size: 28px;
- color: var(--fg-strong, #000);
+ color: #000;
}
.markdown-body h2 {
font-size: 24px;
- border-bottom: 1px solid var(--border, #ccc);
- color: var(--fg-strong, #000);
+ border-bottom: 1px solid #ccc;
+ color: #000;
}
.markdown-body h3 {
font-size: 18px;
@@ -117,14 +70,18 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
font-size: 14px;
}
.markdown-body h6 {
- color: var(--fg-mute, #777);
+ color: #777;
font-size: 14px;
}
.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre {
margin: 15px 0;
}
.markdown-body hr {
- border: 2px solid var(--border, #ccc);
+ background: transparent url("/dirty-shade.png") repeat-x 0 0;
+ border: 0 none;
+ color: #ccc;
+ height: 4px;
+ padding: 0;
}
.markdown-body>h2:first-child, .markdown-body>h1:first-child, .markdown-body>h1:first-child+h2, .markdown-body>h3:first-child, .markdown-body>h4:first-child, .markdown-body>h5:first-child, .markdown-body>h6:first-child {
margin-top: 0;
@@ -186,9 +143,9 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
margin-bottom: 0px;
}
.markdown-body blockquote {
- border-left: 4px solid var(--border, #ddd);
+ border-left: 4px solid #DDD;
padding: 0 15px;
- color: var(--fg-mute, #777);
+ color: #777;
}
.markdown-body blockquote>:first-child {
margin-top: 0px;
@@ -200,15 +157,15 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
font-weight: bold;
}
.markdown-body table th, .markdown-body table td {
- border: 1px solid var(--border, #ccc);
+ border: 1px solid #ccc;
padding: 6px 13px;
}
.markdown-body table tr {
- border-top: 1px solid var(--border, #ccc);
- background-color: var(--bg, #fff);
+ border-top: 1px solid #ccc;
+ background-color: #fff;
}
.markdown-body table tr:nth-child(2n) {
- background-color: var(--bg-zebra, #f8f8f8);
+ background-color: #f8f8f8;
}
.markdown-body img {
max-width: 100%;
@@ -220,7 +177,7 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
overflow: hidden;
}
.markdown-body span.frame>span {
- border: 1px solid var(--border, #ddd);
+ border: 1px solid #ddd;
display: block;
float: left;
overflow: hidden;
@@ -234,7 +191,7 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
}
.markdown-body span.frame span span {
clear: both;
- color: var(--fg, #333);
+ color: #333;
display: block;
padding: 5px 0 0;
}
@@ -292,8 +249,8 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
.markdown-body code, .markdown-body tt {
margin: 0 2px;
padding: 0px 5px;
- border: 1px solid var(--border, #eaeaea);
- background-color: var(--bg-zebra, #f8f8f8);
+ border: 1px solid #eaeaea;
+ background-color: #f8f8f8;
border-radius: 3px;
}
.markdown-body code {
@@ -307,8 +264,8 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
background: transparent;
}
.markdown-body .highlight pre, .markdown-body pre {
- background-color: var(--bg-zebra, #f8f8f8);
- border: 1px solid var(--border, #ccc);
+ background-color: #f8f8f8;
+ border: 1px solid #ccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
@@ -322,21 +279,11 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
border: none;
}
''')
-sys.stdout.write(style_defs('.highlight'))
-sys.stdout.write('''
-</style>
+print(HtmlFormatter(style='pastie').get_style_defs('.highlight'))
+print('''
+</style>
''')
-sys.stdout.write("<div class='markdown-body'>")
-sys.stdout.flush()
+print("<div class='markdown-body'>")
# Note: you may want to run this through bleach for sanitization
-markdown.markdownFromFile(
- output_format="html5",
- extensions=[
- "markdown.extensions.fenced_code",
- "markdown.extensions.codehilite",
- "markdown.extensions.tables",
- "markdown.extensions.sane_lists",
- TocExtension(anchorlink=True)],
- extension_configs={
- "markdown.extensions.codehilite":{"css_class":"highlight"}})
-sys.stdout.write("</div>")
+markdown.markdownFromFile(output_format="html5", extensions=["markdown.extensions.fenced_code", "markdown.extensions.codehilite", "markdown.extensions.tables"], extension_configs={"markdown.extensions.codehilite":{"css_class":"highlight"}})
+print("</div>")