From 11124d9f8ddd547c93078dcf6380deacec7fc32f Mon Sep 17 00:00:00 2001 From: Waylan Limberg Date: Tue, 7 Jun 2011 10:48:55 -0400 Subject: Added smart_strong extension. Fixes Issue #17. Like PHP Markdown Extra, we now include smart handling of double underscores (not just single underscores). The new behavior may be called seperately as the 'smart_strong' extension or as part of the 'extra' extension. --- docs/extensions/Smart_Strong.txt | 30 +++++++++++++++++++++++++ docs/extensions/extra.txt | 1 + markdown/extensions/extra.py | 3 ++- markdown/extensions/smart_strong.py | 45 +++++++++++++++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 docs/extensions/Smart_Strong.txt create mode 100644 markdown/extensions/smart_strong.py diff --git a/docs/extensions/Smart_Strong.txt b/docs/extensions/Smart_Strong.txt new file mode 100644 index 0000000..c939016 --- /dev/null +++ b/docs/extensions/Smart_Strong.txt @@ -0,0 +1,30 @@ +Smart_Strong +------------ + +Summary + +The Markdown Smart_Strong Extension adds smarter handling of double underscores +within words. This does for double underscores what 'smart_emphasis' does for +single underscores. + +The Smart_Strong Extension is included in the standard Markdown library. + +Usage +----- + + >>> import markdown + >>> markdown.markdown('Text with double__underscore__words.', \ + extensions=['smart_strong']) + u'

Text with double__underscore__words.

' + >>> markdown.markdown('__Strong__ still works.', \ + extensions=['smart_strong']) + u'

Strong still works.

' + >>> markdown.markdown('__this__works__too__.', \ + extensions=['smart_strong']) + u'

this__works__too.

' + +This extension is also included with the [[Extra]] Extension. You may call that +extension to get this behavior with all the other features of 'Extra'. + + >>> markdown.markdown(text, extensions=['extra']) + diff --git a/docs/extensions/extra.txt b/docs/extensions/extra.txt index 817d58f..018a849 100644 --- a/docs/extensions/extra.txt +++ b/docs/extensions/extra.txt @@ -15,6 +15,7 @@ The supported extensions include: * [[Footnotes]] * [[HeaderId]] * [[Tables]] +* [[Smart_Strong]] See each individual extension for syntax documentation. Extra and all it's supported extensions are included in the standard Markdown library. diff --git a/markdown/extensions/extra.py b/markdown/extensions/extra.py index e569029..60ad55e 100644 --- a/markdown/extensions/extra.py +++ b/markdown/extensions/extra.py @@ -29,7 +29,8 @@ when you upgrade to any future version of Python-Markdown. import markdown -extensions = ['fenced_code', +extensions = ['smart_strong', + 'fenced_code', 'footnotes', 'headerid', 'def_list', diff --git a/markdown/extensions/smart_strong.py b/markdown/extensions/smart_strong.py new file mode 100644 index 0000000..4fb3280 --- /dev/null +++ b/markdown/extensions/smart_strong.py @@ -0,0 +1,45 @@ +''' +Smart_Strong Extension for Python-Markdown +========================================== + +This extention as a smarter handleing of double underscores within words. + +Simple Usage: + + >>> import markdown + >>> markdown.markdown('Text with double__underscore__words.', \ + extensions=['smart_strong']) + u'

Text with double__underscore__words.

' + >>> markdown.markdown('__Strong__ still works.', \ + extensions=['smart_strong']) + u'

Strong still works.

' + >>> markdown.markdown('__this__works__too__.', \ + extensions=['smart_strong']) + u'

this__works__too.

' + +Copyright 2011 +[Waylan Limberg](http://achinghead.com) + +''' + +import re +import markdown +from markdown.inlinepatterns import SimpleTagPattern + +SMART_STRONG_RE = r'(?