aboutsummaryrefslogtreecommitdiffstats
path: root/markdown/inlinepatterns.py
diff options
context:
space:
mode:
authorIsaac Muse <faceless.shop@gmail.com>2018-07-29 12:44:18 -0600
committerWaylan Limberg <waylan.limberg@icloud.com>2018-07-29 14:44:18 -0400
commit59406c41e7c3548d1c95a2091e2d676323494f62 (patch)
tree48eabd91c037842674cb2af0454a90de97eb6f1b /markdown/inlinepatterns.py
parent0081cb8519ebda441b129462e8eb6c0f6c7d30a4 (diff)
downloadmarkdown-59406c41e7c3548d1c95a2091e2d676323494f62.tar.gz
markdown-59406c41e7c3548d1c95a2091e2d676323494f62.tar.bz2
markdown-59406c41e7c3548d1c95a2091e2d676323494f62.zip
Fix double escaping of amp in attributes (#670)
Serializer should only escape & in attributes if not part of &amp; Better regex avoid Unicode and `_` in amp detection. In general, we don't want to escape already escaped content, but with code content, we want literal representations of escaped content, so have code content explicitly escape its content before placing in AtomicStrings. Closes #669.
Diffstat (limited to 'markdown/inlinepatterns.py')
-rw-r--r--markdown/inlinepatterns.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/markdown/inlinepatterns.py b/markdown/inlinepatterns.py
index 83edf4b..8d49d07 100644
--- a/markdown/inlinepatterns.py
+++ b/markdown/inlinepatterns.py
@@ -158,7 +158,7 @@ AUTOMAIL_RE = r'<([^> \!]*@[^> ]*)>'
HTML_RE = r'(\<([a-zA-Z/][^\>]*?|\!--.*?--)\>)'
# &amp;
-ENTITY_RE = r'(&[\#a-zA-Z0-9]*;)'
+ENTITY_RE = r'(&(?:\#[0-9]+|[a-zA-Z0-9]+);)'
# two spaces at end of line
LINE_BREAK_RE = r' \n'
@@ -369,7 +369,7 @@ class BacktickInlineProcessor(InlineProcessor):
def handleMatch(self, m, data):
if m.group(3):
el = util.etree.Element(self.tag)
- el.text = util.AtomicString(m.group(3).strip())
+ el.text = util.AtomicString(util.code_escape(m.group(3).strip()))
return el, m.start(0), m.end(0)
else:
return m.group(1).replace('\\\\', self.ESCAPED_BSLASH), m.start(0), m.end(0)