1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00
Files
github-octodns/script/markdown-toc
2023-08-07 13:09:57 -07:00

32 lines
772 B
Python
Executable File

#!/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()