Basic conversion skeleton

This commit is contained in:
Matthew Tretter
2012-06-29 12:19:30 -04:00
commit 36cb7f6ac1
6 changed files with 103 additions and 0 deletions

42
markdownify/__init__.py Normal file
View File

@@ -0,0 +1,42 @@
from lxml.etree import tostring
from lxml.html.soupparser import fromstring
class MarkdownConverter(object):
def __init__(self, strip=None, keep=None):
if strip is not None and keep is not None:
raise ValueError('You may specify either tags to strip or tags to'
' keep, but not both.')
self.strip = strip
self.keep = keep
def convert(self, html):
soup = fromstring(html)
self.convert_tag(soup)
return soup.text
def convert_tag(self, node):
text = node.text or ''
# Convert the children first
for el in node.findall('*'):
self.convert_tag(el)
convert_fn = getattr(self, 'convert_%s' % el.tag, None)
tail = el.tail or ''
el.tail = ''
if convert_fn:
text += convert_fn(el)
else:
text += el.text or ''
text += tail
node.clear()
node.text = text
def markdownify(html, strip=None, keep=None):
converter = MarkdownConverter(strip, keep)
return converter.convert(html)

1
markdownify/version.py Normal file
View File

@@ -0,0 +1 @@
__version__ = '0.1.0'