diff options
-rw-r--r-- | markdown/blockprocessors.py | 17 | ||||
-rw-r--r-- | tests/misc/some-test.html | 4 |
2 files changed, 18 insertions, 3 deletions
diff --git a/markdown/blockprocessors.py b/markdown/blockprocessors.py index 2f15578..5949c00 100644 --- a/markdown/blockprocessors.py +++ b/markdown/blockprocessors.py @@ -301,6 +301,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 (python string) with which the lists starts (default=1) + # Eg: If list is intialized as) + # 3. Item + # The ol tag will get starts="3" attribute + STARTSWITH = '1' def test(self, parent, block): return bool(self.RE.match(block)) @@ -340,6 +345,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 !='1': + lst.attrib['start'] = self.STARTSWITH + self.parser.state.set('list') # Loop through items in block, recursively parsing each with the # appropriate parent. @@ -359,7 +368,13 @@ class OListProcessor(BlockProcessor): for line in block.split('\n'): m = self.CHILD_RE.match(line) if m: - # This is a new item. Append + # This is a new list item + # 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+)') + self.STARTSWITH = INTEGER_RE.match(m.group(1)).group() + # Append to the list items.append(m.group(3)) elif self.INDENT_RE.match(line): # This is an indented (possibly nested) item. diff --git a/tests/misc/some-test.html b/tests/misc/some-test.html index b78683f..92e7262 100644 --- a/tests/misc/some-test.html +++ b/tests/misc/some-test.html @@ -51,7 +51,7 @@ ok with a bunch of items</li> <li> <p>Mostly fruits</p> -<ol> +<ol start="3"> <li>Apple</li> <li>Pare</li> </ol> @@ -65,4 +65,4 @@ Another code example * Lists and similar stuff > Should be ignored -</code></pre>
\ No newline at end of file +</code></pre> |