From 4a3d1a6bc0cb49d8a472380614b53fdd300e7512 Mon Sep 17 00:00:00 2001 From: Isaac Muse Date: Fri, 20 Jan 2017 16:16:52 -0700 Subject: Better inline code escaping (#533) This aims to escape code in a more expected fashion. This handles when backticks are escaped and when the escapes before backticks are escaped. --- markdown/inlinepatterns.py | 14 +++++++++----- tests/extensions/extra/tables.html | 21 ++++++++++++++++++++- tests/extensions/extra/tables.txt | 7 +++++++ tests/misc/backtick-escape.html | 5 +++-- tests/misc/backtick-escape.txt | 5 +++-- 5 files changed, 42 insertions(+), 10 deletions(-) diff --git a/markdown/inlinepatterns.py b/markdown/inlinepatterns.py index 67bc2a8..37c9afa 100644 --- a/markdown/inlinepatterns.py +++ b/markdown/inlinepatterns.py @@ -103,7 +103,7 @@ BRK = ( NOIMG = r'(?` element containing the matching text. """ def __init__(self, pattern): Pattern.__init__(self, pattern) - self.tag = "code" + self.ESCAPED_BSLASH = '%s%s%s' % (util.STX, ord('\\'), util.ETX) + self.tag = 'code' def handleMatch(self, m): - el = util.etree.Element(self.tag) - el.text = util.AtomicString(m.group(3).strip()) - return el + if m.group(4): + el = util.etree.Element(self.tag) + el.text = util.AtomicString(m.group(4).strip()) + return el + else: + return m.group(2).replace('\\\\', self.ESCAPED_BSLASH) class DoubleTagPattern(SimpleTagPattern): diff --git a/tests/extensions/extra/tables.html b/tests/extensions/extra/tables.html index b81582c..2418c98 100644 --- a/tests/extensions/extra/tables.html +++ b/tests/extensions/extra/tables.html @@ -356,4 +356,23 @@ Content Cell | Content Cell

| Column1 | Column2 | | ------- || ------- | | row1 | row1 | -| row2 | row2 |

\ No newline at end of file +| row2 | row2 |

+

Test escaped code in Table

+ + + + + + + + + + + + + + + + + +
Should not be codeShould be code
`Not code`\code
\`Not code\`\\code
\ No newline at end of file diff --git a/tests/extensions/extra/tables.txt b/tests/extensions/extra/tables.txt index d5bd6ea..d766224 100644 --- a/tests/extensions/extra/tables.txt +++ b/tests/extensions/extra/tables.txt @@ -121,3 +121,10 @@ Escaped pipes in format row should not be a table | ------- \|| ------- | | row1 | row1 | | row2 | row2 | + +Test escaped code in Table + +Should not be code | Should be code +------------------ | -------------- +\`Not code\` | \\`code` +\\\`Not code\\\` | \\\\`code` diff --git a/tests/misc/backtick-escape.html b/tests/misc/backtick-escape.html index 07f5115..da30541 100644 --- a/tests/misc/backtick-escape.html +++ b/tests/misc/backtick-escape.html @@ -1,3 +1,4 @@ -

\`This should not be in code.\` -`This also should not be in code.` +

`This should not be in code.` +\This should be in code.\\ +\`This should not be in code.\` `And finally this should not be in code.`

\ No newline at end of file diff --git a/tests/misc/backtick-escape.txt b/tests/misc/backtick-escape.txt index b4d80b2..c019463 100644 --- a/tests/misc/backtick-escape.txt +++ b/tests/misc/backtick-escape.txt @@ -1,3 +1,4 @@ -\\`This should not be in code.\\` -\`This also should not be in code.\` +\`This should not be in code.\` +\\`This should be in code.\\` +\\\`This should not be in code.\\\` \`And finally this should not be in code.` -- cgit v1.2.3