aboutsummaryrefslogtreecommitdiffstats
path: root/markdown/blockprocessors.py
diff options
context:
space:
mode:
authorWaylan Limberg <waylan@gmail.com>2010-03-19 13:00:35 -0400
committerWaylan Limberg <waylan@gmail.com>2010-03-19 13:00:35 -0400
commit9a31684b9a683fe9b0d2871649b379fadfb60ade (patch)
treed8248f52a865f7780e8aa8fcc85a8540abe336ce /markdown/blockprocessors.py
parentb77a023de142abdd5e7d88a28fb72352708ab3d5 (diff)
downloadmarkdown-9a31684b9a683fe9b0d2871649b379fadfb60ade.tar.gz
markdown-9a31684b9a683fe9b0d2871649b379fadfb60ade.tar.bz2
markdown-9a31684b9a683fe9b0d2871649b379fadfb60ade.zip
Fixed Ticket 57. Lists where the first line of an item is a nested item, now observe rules for using p tags. Thanks to Gerry LaMontagne for the patch.
Diffstat (limited to 'markdown/blockprocessors.py')
-rw-r--r--markdown/blockprocessors.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/markdown/blockprocessors.py b/markdown/blockprocessors.py
index 98db90b..1ac2ed2 100644
--- a/markdown/blockprocessors.py
+++ b/markdown/blockprocessors.py
@@ -133,8 +133,16 @@ class ListIndentProcessor(BlockProcessor):
self.parser.state.set('detabbed')
if parent.tag in self.ITEM_TYPES:
- # The parent is already a li. Just parse the child block.
- self.parser.parseBlocks(parent, [block])
+ # It's possible that this parent has a 'ul' or 'ol' child list
+ # with a member. If that is the case, then that should be the
+ # parent. This is intended to catch the edge case of an indented
+ # list whose first member was parsed previous to this point
+ # see OListProcessor
+ if len(parent) and parent[-1].tag in self.LIST_TYPES:
+ self.parser.parseBlocks(parent[-1], [block])
+ else:
+ # The parent is already a li. Just parse the child block.
+ self.parser.parseBlocks(parent, [block])
elif sibling.tag in self.ITEM_TYPES:
# The sibling is a li. Use it as parent.
self.parser.parseBlocks(sibling, [block])
@@ -287,6 +295,13 @@ class OListProcessor(BlockProcessor):
firstitem = items.pop(0)
self.parser.parseBlocks(li, [firstitem])
self.parser.state.reset()
+ elif parent.tag in ['ol', 'ul']:
+ # this catches the edge case of a multi-item indented list whose
+ # first item is in a blank parent-list item:
+ # * * subitem1
+ # * subitem2
+ # see also ListIndentProcessor
+ lst = parent
else:
# This is a new list so create parent with appropriate tag.
lst = markdown.etree.SubElement(parent, self.TAG)