diff options
-rw-r--r-- | markdown/inlinepatterns.py | 14 | ||||
-rw-r--r-- | tests/extensions/extra/tables.html | 21 | ||||
-rw-r--r-- | tests/extensions/extra/tables.txt | 7 | ||||
-rw-r--r-- | tests/misc/backtick-escape.html | 5 | ||||
-rw-r--r-- | 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'(?<!\!)' # `e=f()` or ``e=f("`")`` -BACKTICK_RE = r'(?<!\\)(`+)(.+?)(?<!`)\2(?!`)' +BACKTICK_RE = r'(?:(?<!\\)((?:\\{2})+)(?=`+)|(?<!\\)(`+)(.+?)(?<!`)\3(?!`))' # \< ESCAPE_RE = r'\\(.)' @@ -302,12 +302,16 @@ class BacktickPattern(Pattern): """ Return a `<code>` 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 <p>| Column1 | Column2 | | ------- || ------- | | row1 | row1 | -| row2 | row2 |</p>
\ No newline at end of file +| row2 | row2 |</p> +<p>Test escaped code in Table</p> +<table> +<thead> +<tr> +<th>Should not be code</th> +<th>Should be code</th> +</tr> +</thead> +<tbody> +<tr> +<td>`Not code`</td> +<td>\<code>code</code></td> +</tr> +<tr> +<td>\`Not code\`</td> +<td>\\<code>code</code></td> +</tr> +</tbody> +</table>
\ 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 @@ -<p>\`This should not be in code.\` -`This also should not be in code.` +<p>`This should not be in code.` +\<code>This should be in code.\\</code> +\`This should not be in code.\` `And finally this should not be in code.`</p>
\ 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.` |