all repos — cgit @ d88ec849c4f7af41a8a41af1a4f79a2b4d41717a

a hyperfast web frontend for git written in c

filters/html-converters/md2html (view raw)

  1#!/usr/bin/env python
  2import markdown
  3from pygments.formatters import HtmlFormatter
  4print('''
  5<style>
  6.markdown-body {
  7    font-size: 14px;
  8    line-height: 1.6;
  9    overflow: hidden;
 10}
 11.markdown-body>*:first-child {
 12    margin-top: 0 !important;
 13}
 14.markdown-body>*:last-child {
 15    margin-bottom: 0 !important;
 16}
 17.markdown-body a.absent {
 18    color: #c00;
 19}
 20.markdown-body a.anchor {
 21    display: block;
 22    padding-left: 30px;
 23    margin-left: -30px;
 24    cursor: pointer;
 25    position: absolute;
 26    top: 0;
 27    left: 0;
 28    bottom: 0;
 29}
 30.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 {
 31    margin: 20px 0 10px;
 32    padding: 0;
 33    font-weight: bold;
 34    -webkit-font-smoothing: antialiased;
 35    cursor: text;
 36    position: relative;
 37}
 38.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 {
 39    display: none;
 40    color: #000;
 41}
 42.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 {
 43    text-decoration: none;
 44    line-height: 1;
 45    padding-left: 0;
 46    margin-left: -22px;
 47    top: 15%}
 48.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 {
 49    display: inline-block;
 50}
 51.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 {
 52    font-size: inherit;
 53}
 54.markdown-body h1 {
 55    font-size: 28px;
 56    color: #000;
 57}
 58.markdown-body h2 {
 59    font-size: 24px;
 60    border-bottom: 1px solid #ccc;
 61    color: #000;
 62}
 63.markdown-body h3 {
 64    font-size: 18px;
 65}
 66.markdown-body h4 {
 67    font-size: 16px;
 68}
 69.markdown-body h5 {
 70    font-size: 14px;
 71}
 72.markdown-body h6 {
 73    color: #777;
 74    font-size: 14px;
 75}
 76.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre {
 77    margin: 15px 0;
 78}
 79.markdown-body hr {
 80    background: transparent url("/dirty-shade.png") repeat-x 0 0;
 81    border: 0 none;
 82    color: #ccc;
 83    height: 4px;
 84    padding: 0;
 85}
 86.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 {
 87    margin-top: 0;
 88    padding-top: 0;
 89}
 90.markdown-body a:first-child h1, .markdown-body a:first-child h2, .markdown-body a:first-child h3, .markdown-body a:first-child h4, .markdown-body a:first-child h5, .markdown-body a:first-child h6 {
 91    margin-top: 0;
 92    padding-top: 0;
 93}
 94.markdown-body h1+p, .markdown-body h2+p, .markdown-body h3+p, .markdown-body h4+p, .markdown-body h5+p, .markdown-body h6+p {
 95    margin-top: 0;
 96}
 97.markdown-body li p.first {
 98    display: inline-block;
 99}
100.markdown-body ul, .markdown-body ol {
101    padding-left: 30px;
102}
103.markdown-body ul.no-list, .markdown-body ol.no-list {
104    list-style-type: none;
105    padding: 0;
106}
107.markdown-body ul li>:first-child, .markdown-body ul li ul:first-of-type, .markdown-body ul li ol:first-of-type, .markdown-body ol li>:first-child, .markdown-body ol li ul:first-of-type, .markdown-body ol li ol:first-of-type {
108    margin-top: 0px;
109}
110.markdown-body ul li p:last-of-type, .markdown-body ol li p:last-of-type {
111    margin-bottom: 0;
112}
113.markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul {
114    margin-bottom: 0;
115}
116.markdown-body dl {
117    padding: 0;
118}
119.markdown-body dl dt {
120    font-size: 14px;
121    font-weight: bold;
122    font-style: italic;
123    padding: 0;
124    margin: 15px 0 5px;
125}
126.markdown-body dl dt:first-child {
127    padding: 0;
128}
129.markdown-body dl dt>:first-child {
130    margin-top: 0px;
131}
132.markdown-body dl dt>:last-child {
133    margin-bottom: 0px;
134}
135.markdown-body dl dd {
136    margin: 0 0 15px;
137    padding: 0 15px;
138}
139.markdown-body dl dd>:first-child {
140    margin-top: 0px;
141}
142.markdown-body dl dd>:last-child {
143    margin-bottom: 0px;
144}
145.markdown-body blockquote {
146    border-left: 4px solid #DDD;
147    padding: 0 15px;
148    color: #777;
149}
150.markdown-body blockquote>:first-child {
151    margin-top: 0px;
152}
153.markdown-body blockquote>:last-child {
154    margin-bottom: 0px;
155}
156.markdown-body table th {
157    font-weight: bold;
158}
159.markdown-body table th, .markdown-body table td {
160    border: 1px solid #ccc;
161    padding: 6px 13px;
162}
163.markdown-body table tr {
164    border-top: 1px solid #ccc;
165    background-color: #fff;
166}
167.markdown-body table tr:nth-child(2n) {
168    background-color: #f8f8f8;
169}
170.markdown-body img {
171    max-width: 100%;
172    -moz-box-sizing: border-box;
173    box-sizing: border-box;
174}
175.markdown-body span.frame {
176    display: block;
177    overflow: hidden;
178}
179.markdown-body span.frame>span {
180    border: 1px solid #ddd;
181    display: block;
182    float: left;
183    overflow: hidden;
184    margin: 13px 0 0;
185    padding: 7px;
186    width: auto;
187}
188.markdown-body span.frame span img {
189    display: block;
190    float: left;
191}
192.markdown-body span.frame span span {
193    clear: both;
194    color: #333;
195    display: block;
196    padding: 5px 0 0;
197}
198.markdown-body span.align-center {
199    display: block;
200    overflow: hidden;
201    clear: both;
202}
203.markdown-body span.align-center>span {
204    display: block;
205    overflow: hidden;
206    margin: 13px auto 0;
207    text-align: center;
208}
209.markdown-body span.align-center span img {
210    margin: 0 auto;
211    text-align: center;
212}
213.markdown-body span.align-right {
214    display: block;
215    overflow: hidden;
216    clear: both;
217}
218.markdown-body span.align-right>span {
219    display: block;
220    overflow: hidden;
221    margin: 13px 0 0;
222    text-align: right;
223}
224.markdown-body span.align-right span img {
225    margin: 0;
226    text-align: right;
227}
228.markdown-body span.float-left {
229    display: block;
230    margin-right: 13px;
231    overflow: hidden;
232    float: left;
233}
234.markdown-body span.float-left span {
235    margin: 13px 0 0;
236}
237.markdown-body span.float-right {
238    display: block;
239    margin-left: 13px;
240    overflow: hidden;
241    float: right;
242}
243.markdown-body span.float-right>span {
244    display: block;
245    overflow: hidden;
246    margin: 13px auto 0;
247    text-align: right;
248}
249.markdown-body code, .markdown-body tt {
250    margin: 0 2px;
251    padding: 0px 5px;
252    border: 1px solid #eaeaea;
253    background-color: #f8f8f8;
254    border-radius: 3px;
255}
256.markdown-body code {
257    white-space: nowrap;
258}
259.markdown-body pre>code {
260    margin: 0;
261    padding: 0;
262    white-space: pre;
263    border: none;
264    background: transparent;
265}
266.markdown-body .highlight pre, .markdown-body pre {
267    background-color: #f8f8f8;
268    border: 1px solid #ccc;
269    font-size: 13px;
270    line-height: 19px;
271    overflow: auto;
272    padding: 6px 10px;
273    border-radius: 3px;
274}
275.markdown-body pre code, .markdown-body pre tt {
276    margin: 0;
277    padding: 0;
278    background-color: transparent;
279    border: none;
280}
281''')
282print(HtmlFormatter(style='pastie').get_style_defs('.highlight'))
283print('''
284</style>   
285''')
286print("<div class='markdown-body'>")
287# Note: you may want to run this through bleach for sanitization
288markdown.markdownFromFile(output_format="html5", extensions=["markdown.extensions.fenced_code", "markdown.extensions.codehilite", "markdown.extensions.tables"], extension_configs={"markdown.extensions.codehilite":{"css_class":"highlight"}})
289print("</div>")