|
54 | 54 |
|
55 | 55 | LINK_REGEX = r'\[.*\]\((.*\.md)\)'
|
56 | 56 |
|
| 57 | +HTML_TEMPLATE = """\ |
| 58 | +<!DOCTYPE html> |
| 59 | +<html> |
| 60 | + <head> |
| 61 | + <meta charset="UTF-8"> |
| 62 | + <title>{title}</title> |
| 63 | + </head> |
| 64 | + <body> |
| 65 | + {body} |
| 66 | + </body> |
| 67 | +</html> |
| 68 | +""" |
| 69 | + |
57 | 70 |
|
58 | 71 | def askyesno(question, default=True):
|
59 | 72 | """Ask a yes/no question and return True or False.
|
@@ -89,6 +102,7 @@ class TutorialRenderer(mistune.Renderer):
|
89 | 102 |
|
90 | 103 | def __init__(self):
|
91 | 104 | super().__init__()
|
| 105 | + self.title = None # will be set by header() |
92 | 106 | self._headercounts = {}
|
93 | 107 |
|
94 | 108 | def _get_header_link(self, title):
|
@@ -125,6 +139,8 @@ def _get_header_link(self, title):
|
125 | 139 | def header(self, text, level, raw):
|
126 | 140 | """Create a header that is also a link and a # link target."""
|
127 | 141 | # "# raw"
|
| 142 | + if level == 1: |
| 143 | + self.title = text |
128 | 144 | target = self._get_header_link(raw)
|
129 | 145 | content = super().header(text, level, raw)
|
130 | 146 | return '<a name="{0}" href="#{0}">{1}</a>'.format(target, content)
|
@@ -201,11 +217,13 @@ def main():
|
201 | 217 | for markdownfile in filelist:
|
202 | 218 | htmlfile = os.path.join('html', fix_filename(markdownfile))
|
203 | 219 | print(' ', markdownfile, '->', htmlfile)
|
204 |
| - with open(markdownfile, 'r') as f1: |
205 |
| - with open(htmlfile, 'w') as f2: |
206 |
| - md = f1.read() |
207 |
| - html = mistune.markdown(md, renderer=TutorialRenderer()) |
208 |
| - print(html, file=f2) |
| 220 | + with open(markdownfile, 'r') as f: |
| 221 | + markdown = f.read() |
| 222 | + renderer = TutorialRenderer() |
| 223 | + body = mistune.markdown(markdown, renderer=renderer) |
| 224 | + html = HTML_TEMPLATE.format(title=renderer.title, body=body) |
| 225 | + with open(htmlfile, 'w') as f: |
| 226 | + print(html, file=f) |
209 | 227 |
|
210 | 228 | print("Copying other files...")
|
211 | 229 | shutil.copytree('images', os.path.join('html', 'images'))
|
|
0 commit comments