aboutsummaryrefslogtreecommitdiffstats
path: root/markdown/treeprocessors.py
diff options
context:
space:
mode:
authorWaylan Limberg <waylan@gmail.com>2014-09-08 22:37:45 -0400
committerWaylan Limberg <waylan@gmail.com>2014-09-08 22:37:45 -0400
commitb91a37be0ab019fa1ee0b94014a6ed0c7ff5dbf5 (patch)
tree6eb33cd6eebc1a9f90c99976d4cbfac4b776fd94 /markdown/treeprocessors.py
parent7db56daedf8a6006222f55eeeab748e7789fba89 (diff)
downloadmarkdown-b91a37be0ab019fa1ee0b94014a6ed0c7ff5dbf5.tar.gz
markdown-b91a37be0ab019fa1ee0b94014a6ed0c7ff5dbf5.tar.bz2
markdown-b91a37be0ab019fa1ee0b94014a6ed0c7ff5dbf5.zip
Code Blocks must always be AtomicStrings
Fixes #340. The "inline" TreeProcessor runs before the "prettify" TreeProcessor, but the "smarty" TreeProcessor (wich is just another instance of `InlineProcessor`) runs after the "prettify" TreeProcessor. The problem was that the "prettify" TreeProcessor was losing the AtomicString quality of the text of code blocks (any operation on a string creates a new string. When that string is an AtomicString, the new string must explicitly be declared as an AtomicString. As the "prettify" TreeProcessor cleans up newlines on code blocks, it was changing the AtomicString to a normal string. And as `InlineProcessor` identifies what elements to skip solely by whether the text is an AtomicString, the "smarty" instance was running on code blocks. Importantly, I added a test of code blocks and spans for smarty, so this shouldn't break again.
Diffstat (limited to 'markdown/treeprocessors.py')
-rw-r--r--markdown/treeprocessors.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/markdown/treeprocessors.py b/markdown/treeprocessors.py
index 113ad3c..a82141a 100644
--- a/markdown/treeprocessors.py
+++ b/markdown/treeprocessors.py
@@ -358,4 +358,4 @@ class PrettifyTreeprocessor(Treeprocessor):
pres = root.getiterator('pre')
for pre in pres:
if len(pre) and pre[0].tag == 'code':
- pre[0].text = pre[0].text.rstrip() + '\n'
+ pre[0].text = util.AtomicString(pre[0].text.rstrip() + '\n')