-
Notifications
You must be signed in to change notification settings - Fork 3
/
mdx_downheader.py
34 lines (28 loc) · 1.08 KB
/
mdx_downheader.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- coding: utf-8 -*-
"""
A python markdown extension for reducing header level, h1 becomes h2, etc...
Load it twice for reducing it twice, load it more for more.
Author: Knx.corp
Source: http://code.google.com/p/markdown-downheader/
"""
import markdown
import re
def makeExtension(configs=None) :
return DownHeaderExtension(configs=configs)
class DownHeaderExtension(markdown.Extension):
def extendMarkdown(self, md, md_globals):
if 'downheader' in md.treeprocessors.keys():
md.treeprocessors['downheader'].offset += 1
else:
md.treeprocessors.add('downheader', DownHeaderProcessor(), '_end')
class DownHeaderProcessor(markdown.treeprocessors.Treeprocessor):
def __init__(self, offset=1):
markdown.treeprocessors.Treeprocessor.__init__(self)
self.offset = offset
def run(self, node):
expr = re.compile('h(\d)')
for child in node.getiterator():
match = expr.match(child.tag)
if match:
child.tag = 'h' + str(min(6, int(match.group(1))+self.offset))
return node