Add escape util

This commit is contained in:
Matthew Tretter
2012-06-29 12:36:28 -04:00
parent c7cbe8a5b1
commit 59fd19b29a
2 changed files with 12 additions and 3 deletions

View File

@@ -2,6 +2,12 @@ from lxml.etree import tostring
from lxml.html.soupparser import fromstring
def escape(text):
if not text:
return ''
return text.replace('_', r'\_')
class MarkdownConverter(object):
def __init__(self, strip=None, keep=None):
if strip is not None and keep is not None:
@@ -16,20 +22,20 @@ class MarkdownConverter(object):
return soup.text
def convert_tag(self, node):
text = node.text or ''
text = escape(node.text)
# 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 ''
tail = escape(el.tail)
el.tail = ''
if convert_fn:
text += convert_fn(el)
else:
text += el.text or ''
text += el.text
text += tail

View File

@@ -10,6 +10,9 @@ class BasicTests(unittest.TestCase):
def test_soup(self):
self.assertEqual(md('<div><span>Hello</div></span>'), 'Hello')
def test_escape(self):
self.assertEqual(md('_hey_dude_'), '\_hey\_dude\_')
class ConversionTests(unittest.TestCase):