h* tag conversion
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
from lxml.etree import tostring
|
||||
from lxml.html.soupparser import fromstring
|
||||
import re
|
||||
|
||||
|
||||
convert_heading_re = re.compile(r'convert_h(\d+)')
|
||||
|
||||
|
||||
def escape(text):
|
||||
@@ -42,6 +46,21 @@ class MarkdownConverter(object):
|
||||
node.clear()
|
||||
node.text = text
|
||||
|
||||
def __getattr__(self, attr):
|
||||
# Handle heading levels > 2
|
||||
m = convert_heading_re.match(attr)
|
||||
if m:
|
||||
n = int(m.group(1))
|
||||
|
||||
def convert(el):
|
||||
return self.convert_hn(n, el)
|
||||
|
||||
convert.__name__ = 'convert_h%s' % n
|
||||
setattr(self, convert.__name__, convert)
|
||||
return convert
|
||||
|
||||
raise AttributeError(attr)
|
||||
|
||||
def underline(self, text, pad_char):
|
||||
text = (text or '').rstrip()
|
||||
return '%s\n%s\n\n' % (text, pad_char * len(text)) if text else ''
|
||||
@@ -55,6 +74,9 @@ class MarkdownConverter(object):
|
||||
def convert_h2(self, el):
|
||||
return self.underline(el.text, '-')
|
||||
|
||||
def convert_hn(self, n, el):
|
||||
return '%s %s\n\n' % ('#' * n, el.text.rstrip()) if el.text else ''
|
||||
|
||||
def convert_i(self, el):
|
||||
return self.convert_em(el)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user