|
|
|
@ -1,31 +0,0 @@ |
|
|
|
#!/usr/bin/env python |
|
|
|
|
|
|
|
from re import compile |
|
|
|
from sys import stdin |
|
|
|
|
|
|
|
splitter = compile(r'\s+') |
|
|
|
|
|
|
|
in_pre = False |
|
|
|
headings = [] |
|
|
|
for line in stdin: |
|
|
|
if line.startswith('```'): |
|
|
|
in_pre = not in_pre |
|
|
|
if in_pre or not line.startswith('#'): |
|
|
|
continue |
|
|
|
level, heading = splitter.split(line, 1) |
|
|
|
if 'Table of Contents' in heading: |
|
|
|
continue |
|
|
|
headings.append((len(level), heading.strip())) |
|
|
|
|
|
|
|
# ignore the first one, it's more of a title |
|
|
|
headings.pop(0) |
|
|
|
|
|
|
|
print('\n## Table of Contents\n') |
|
|
|
min_level = min(h[0] for h in headings) |
|
|
|
for heading in headings: |
|
|
|
level = heading[0] - min_level |
|
|
|
pre = ' ' * (level * 3) |
|
|
|
title = heading[1] |
|
|
|
link = title.lower().replace(' ', '-').replace('`', '') |
|
|
|
print(f'{pre}* [{title}](#{link})') |
|
|
|
print() |