diff options
author | Rohan Jain <crodjer@gmail.com> | 2011-04-03 20:38:59 +0530 |
---|---|---|
committer | Rohan Jain <crodjer@gmail.com> | 2011-04-03 20:38:59 +0530 |
commit | 66ba06fa2ded87dc9042e0cd51da26f99ece8717 (patch) | |
tree | a42ff68585b4a19cb7355f68a6e04f5687d778c1 | |
parent | 80aa9a2d52f2fcbffd6e15d208b8ead5886900b1 (diff) | |
download | markdown-66ba06fa2ded87dc9042e0cd51da26f99ece8717.tar.gz markdown-66ba06fa2ded87dc9042e0cd51da26f99ece8717.tar.bz2 markdown-66ba06fa2ded87dc9042e0cd51da26f99ece8717.zip |
custom index support for ol tag
A ol tag with custom start index can be defined by using a different
integer as the first item numbering.
Search for `3. Bird` on:
http://daringfireball.net/projects/markdown/syntax
-rw-r--r-- | markdown/blockprocessors.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/markdown/blockprocessors.py b/markdown/blockprocessors.py index 77fbc71..f61aecd 100644 --- a/markdown/blockprocessors.py +++ b/markdown/blockprocessors.py @@ -300,6 +300,11 @@ class OListProcessor(BlockProcessor): CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.)|[*+-])[ ]+(.*)') # Detect indented (nested) items of either type INDENT_RE = re.compile(r'^[ ]{4,7}((\d+\.)|[*+-])[ ]+.*') + # The integer with which the lists starts (None means start with 0) + # Eg: If list is intialized as) + # 3. Item + # The ol tag will get starts="3" attribute + STARTSWITH = None def test(self, parent, block): return bool(self.RE.match(block)) @@ -339,6 +344,10 @@ class OListProcessor(BlockProcessor): else: # This is a new list so create parent with appropriate tag. lst = util.etree.SubElement(parent, self.TAG) + # Check if a custom start integer is set + if self.STARTSWITH: + lst.attrib['start'] = self.STARTSWITH + self.parser.state.set('list') # Loop through items in block, recursively parsing each with the # appropriate parent. @@ -358,7 +367,14 @@ class OListProcessor(BlockProcessor): for line in block.split('\n'): m = self.CHILD_RE.match(line) if m: - # This is a new item. Append + # Check first item for the start index + if not items and self.TAG=='ol': + # Detect the integer value of first list item + INTEGER_RE = re.compile('(\d+)') + start_integer = INTEGER_RE.match(m.group(1)).group() + if start_integer!='1': + self.STARTSWITH = start_integer + # Append to the list items.append(m.group(3)) elif self.INDENT_RE.match(line): # This is an indented (possibly nested) item. |