Fix #56: Enable 'toc' and 'extra' markdown renderer extensions
Thanks to @ar4s for the initial patch!
Jonas Haag
11 years ago
0 | 0 | import os |
1 | 1 | |
2 | 2 | LANGUAGES = [] |
3 | ||
4 | try: | |
5 | import markdown | |
6 | LANGUAGES.append((['.md', '.mkdn'], markdown.markdown)) | |
7 | except ImportError: | |
8 | pass | |
9 | ||
10 | try: | |
11 | from docutils.core import publish_parts | |
12 | from docutils.writers.html4css1 import Writer | |
13 | ||
14 | def render_rest(content): | |
15 | # start by h2 and ignore invalid directives and so on (most likely from Sphinx) | |
16 | settings = {'initial_header_level': 2, 'report_level': 'quiet'} | |
17 | return publish_parts(content, | |
18 | writer=Writer(), | |
19 | settings_overrides=settings).get('html_body') | |
20 | ||
21 | LANGUAGES.append((['.rst', '.rest'], render_rest)) | |
22 | except ImportError: | |
23 | pass | |
24 | 3 | |
25 | 4 | |
26 | 5 | def get_renderer(filename): |
39 | 18 | content = open(filename).read() |
40 | 19 | |
41 | 20 | return get_renderer(filename)(content) |
21 | ||
22 | ||
23 | def _load_markdown(): | |
24 | try: | |
25 | import markdown | |
26 | except ImportError: | |
27 | return | |
28 | ||
29 | def render_markdown(content): | |
30 | return markdown.markdown(content, extensions=['toc', 'extra']) | |
31 | ||
32 | LANGUAGES.append((['.md', '.mkdn'], render_markdown)) | |
33 | ||
34 | ||
35 | def _load_restructured_text(): | |
36 | try: | |
37 | from docutils.core import publish_parts | |
38 | from docutils.writers.html4css1 import Writer | |
39 | except ImportError: | |
40 | return | |
41 | ||
42 | def render_rest(content): | |
43 | # start by h2 and ignore invalid directives and so on (most likely from Sphinx) | |
44 | settings = {'initial_header_level': 2, 'report_level': 'quiet'} | |
45 | return publish_parts(content, | |
46 | writer=Writer(), | |
47 | settings_overrides=settings).get('html_body') | |
48 | ||
49 | LANGUAGES.append((['.rst', '.rest'], render_rest)) | |
50 | ||
51 | ||
52 | ||
53 | for loader in [_load_markdown, _load_restructured_text]: | |
54 | loader() |