Skip to content

Commit dd9ab54

Browse files
committed
html_attribute: manipulate "serializers.RE_AMP"
1 parent f4d5657 commit dd9ab54

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

html_attribute.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import markdown
1111
from markdown import postprocessors
12+
from markdown import serializers
1213

1314
import xml.etree.ElementTree as etree
1415

@@ -312,6 +313,17 @@ def _add_meta(self, element):
312313
element.remove(e)
313314
element.append(body)
314315

316+
def _tohtml(self, element):
317+
# return etree.tostring(root, encoding="unicode", method="xml")
318+
# return etree.tostring(root, encoding="unicode", method="html")
319+
old_RE_AMP = serializers.RE_AMP
320+
try:
321+
serializers.RE_AMP = re.compile(r'&')
322+
output = self._markdown.serializer(root)
323+
finally:
324+
serializers.RE_AMP = old_RE_AMP
325+
return output
326+
315327
def run(self, text):
316328
text = '<{tag}>{text}</{tag}>'.format(tag=self._markdown.doc_tag, text=text)
317329
try:
@@ -328,7 +340,7 @@ def run(self, text):
328340
self._iterate(root, self._adjust_url)
329341
self._add_meta(root)
330342

331-
output = etree.tostring(root, encoding="unicode", method="xml")
343+
output = self._tohtml(root)
332344
if self._markdown.stripTopLevelTags:
333345
try:
334346
start = output.index('<%s>' % self._markdown.doc_tag) + len(self._markdown.doc_tag) + 2

0 commit comments

Comments
 (0)