summaryrefslogtreecommitdiff
path: root/toc.py
diff options
context:
space:
mode:
Diffstat (limited to 'toc.py')
-rw-r--r--toc.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/toc.py b/toc.py
index 9bdc8cc..3502d3d 100644
--- a/toc.py
+++ b/toc.py
@@ -17,6 +17,7 @@ valid_toc_headings = {'## TOC', '##TOC'}
TocItem = namedtuple('TocItem', ['name', 'anchor', 'level'])
punctuation_regexp = re.compile(r'[^\w\- ]+')
+numbered_heading_regexp = re.compile(r'^[0-9]+\. ')
def name_to_anchor(name):
# GitHub's algorithm for generating anchors from headings
@@ -49,7 +50,12 @@ def toc_string(toc_items):
lines = ['## %s' % toc_name, '']
for name, anchor, level in toc_items:
padding = ' ' * level
- line = '%s- [%s](#%s)' % (padding, name, anchor)
+ if re.match(numbered_heading_regexp, name):
+ number, name = name.split('.', 1)
+ name = name.lstrip()
+ line = '%s%s. [%s](#%s)' % (padding, number, name, anchor)
+ else:
+ line = '%s- [%s](#%s)' % (padding, name, anchor)
lines.append(line)
return '\n'.join(lines) + '\n'