From 64f5510aeb05d8912bb9f60ad247c815c2b90990 Mon Sep 17 00:00:00 2001 From: Waylan Limberg Date: Thu, 13 Nov 2008 15:53:42 -0500 Subject: Fixed BlockquoteProcessor to acknowledge blocks in which the blockquote starts after the first line. Also updated coresponding test as it had an error and added more detail. All core tests pass now. On to extensions. --- markdown.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'markdown.py') diff --git a/markdown.py b/markdown.py index 4441617..f4536a2 100755 --- a/markdown.py +++ b/markdown.py @@ -361,14 +361,21 @@ class CodeBlockProcessor(BlockProcessor): class BlockQuoteProcessor(BlockProcessor): - RE = re.compile(r'^[ ]{0,3}>[ ](.*)') + RE = re.compile(r'(^|\n)[ ]{0,3}>[ ](.*)') def test(self, parent, block): - return bool(self.RE.match(block)) + return bool(self.RE.search(block)) def run(self, parent, blocks): - block = '\n'.join([self.clean(line) for line in - blocks.pop(0).split('\n')]) + block = blocks.pop(0) + m = self.RE.search(block) + if m: + before = block[:m.start()] # Lines before blockquote + # Pass lines before blockquote in recursively for parsing forst. + self.parser.parseBlocks(parent, [before]) + # Remove ``> `` from begining of each line. + block = '\n'.join([self.clean(line) for line in + block[m.start():].split('\n')]) sibling = self.lastChild(parent) if sibling and sibling.tag == "blockquote": # Previous block was a blockquote so set that as this blocks parent @@ -385,7 +392,7 @@ class BlockQuoteProcessor(BlockProcessor): if line.strip() == ">": return "" elif m: - return m.group(1) + return m.group(2) else: return line -- cgit v1.2.3