diff options
author | Waylan Limberg <waylan@gmail.com> | 2012-01-24 07:57:58 -0500 |
---|---|---|
committer | Waylan Limberg <waylan@gmail.com> | 2012-01-24 07:57:58 -0500 |
commit | a9cd895467b3caa08d585458fdcbcc5525356493 (patch) | |
tree | 2d99fb25c551217a6e59698f193b649ebdca65b8 /markdown | |
parent | acd09498fbd2b13e65038c96a118fd859a6df235 (diff) | |
download | markdown-a9cd895467b3caa08d585458fdcbcc5525356493.tar.gz markdown-a9cd895467b3caa08d585458fdcbcc5525356493.tar.bz2 markdown-a9cd895467b3caa08d585458fdcbcc5525356493.zip |
Fixes #64. Added sane_list extension.
This is an extension which alters the behavior of lists to be less surprising.
If turned out to be rather simple to code. I'm surprised no one had written it
yet.
I should note that this extension does not generate separate lists if different
unordered list markers are used (`*` verses `-` verses `+`) The way the parser
works that would be a little more tricky.
Diffstat (limited to 'markdown')
-rw-r--r-- | markdown/extensions/sane_lists.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/markdown/extensions/sane_lists.py b/markdown/extensions/sane_lists.py new file mode 100644 index 0000000..dce04ea --- /dev/null +++ b/markdown/extensions/sane_lists.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +""" +Sane List Extension for Python-Markdown +======================================= + +Modify the behavior of Lists in Python-Markdown t act in a sane manor. + +In standard Markdown sytex, the following would constitute a single +ordered list. However, with this extension, the output would include +two lists, the first an ordered list and the second and unordered list. + + 1. ordered + 2. list + + * unordered + * list + +Copyright 2011 - [Waylan Limberg](http://achinghead.com) + +""" + +import re +import markdown + + +class SaneOListProcessor(markdown.blockprocessors.OListProcessor): + + CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.))[ ]+(.*)') + SIBLING_TAGS = ['ol'] + + +class SaneUListProcessor(markdown.blockprocessors.UListProcessor): + + CHILD_RE = re.compile(r'^[ ]{0,3}(([*+-]))[ ]+(.*)') + SIBLING_TAGS = ['ul'] + + +class SaneListExtension(markdown.Extension): + """ Add sane lists to Markdown. """ + + def extendMarkdown(self, md, md_globals): + """ Override existing Processors. """ + md.parser.blockprocessors['olist'] = SaneOListProcessor(md.parser) + md.parser.blockprocessors['ulist'] = SaneUListProcessor(md.parser) + + +def makeExtension(configs={}): + return SaneListExtension(configs=configs) + |