aboutsummaryrefslogtreecommitdiffstats
path: root/markdown
diff options
context:
space:
mode:
authorWaylan Limberg <waylan@gmail.com>2012-01-24 07:57:58 -0500
committerWaylan Limberg <waylan@gmail.com>2012-01-24 07:57:58 -0500
commita9cd895467b3caa08d585458fdcbcc5525356493 (patch)
tree2d99fb25c551217a6e59698f193b649ebdca65b8 /markdown
parentacd09498fbd2b13e65038c96a118fd859a6df235 (diff)
downloadmarkdown-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.py49
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)
+