aboutsummaryrefslogtreecommitdiffstats
path: root/markdown
diff options
context:
space:
mode:
authorWaylan Limberg <waylan.limberg@icloud.com>2015-04-07 21:01:55 -0400
committerWaylan Limberg <waylan.limberg@icloud.com>2018-07-31 11:40:59 -0400
commitcba86d6175d00b897d6f5c4b3fec640e7309de60 (patch)
treed91586e9e45ebcd09851e26cc0c09c6ddf6a842c /markdown
parent15acbdec8c9357b78435af707140b0278cf376b2 (diff)
downloadmarkdown-cba86d6175d00b897d6f5c4b3fec640e7309de60.tar.gz
markdown-cba86d6175d00b897d6f5c4b3fec640e7309de60.tar.bz2
markdown-cba86d6175d00b897d6f5c4b3fec640e7309de60.zip
smart_emphasis keyword > legacy_em extension.
The smart_strong extension has been removed and its behavior is now the default (smart em and smart strong are the default). The legacy_em extension restores legacy behavior (no smart em or smart strong). This completes the removal of keywords. All parser behavior is now modified by extensions, not by keywords on the Markdown class.
Diffstat (limited to 'markdown')
-rw-r--r--markdown/core.py10
-rw-r--r--markdown/extensions/extra.py1
-rw-r--r--markdown/extensions/legacy_em.py30
-rw-r--r--markdown/extensions/smart_strong.py37
-rw-r--r--markdown/inlinepatterns.py20
5 files changed, 40 insertions, 58 deletions
diff --git a/markdown/core.py b/markdown/core.py
index 2144f00..d25f20d 100644
--- a/markdown/core.py
+++ b/markdown/core.py
@@ -47,11 +47,6 @@ class Markdown(object):
doc_tag = "div" # Element used to wrap document - later removed
- option_defaults = {
- 'tab_length': 4,
- 'smart_emphasis': True,
- }
-
output_formats = {
'html': to_html_string,
'xhtml': to_xhtml_string,
@@ -73,13 +68,10 @@ class Markdown(object):
* "xhtml": Outputs XHTML style tags. Default.
* "html": Outputs HTML style tags.
* tab_length: Length of tabs in the source. Default: 4
- * smart_emphasis: Treat `_connected_words_` intelligently Default: True
"""
- # Loop through kwargs and assign defaults
- for option, default in self.option_defaults.items():
- setattr(self, option, kwargs.get(option, default))
+ self.tab_length = kwargs.get('tab_length', 4)
self.ESCAPED_CHARS = ['\\', '`', '*', '_', '{', '}', '[', ']',
'(', ')', '>', '#', '+', '-', '.', '!']
diff --git a/markdown/extensions/extra.py b/markdown/extensions/extra.py
index 19b9db0..e498a74 100644
--- a/markdown/extensions/extra.py
+++ b/markdown/extensions/extra.py
@@ -37,7 +37,6 @@ from .. import util
import re
extensions = [
- 'smart_strong',
'fenced_code',
'footnotes',
'attr_list',
diff --git a/markdown/extensions/legacy_em.py b/markdown/extensions/legacy_em.py
new file mode 100644
index 0000000..5cc0f6d
--- /dev/null
+++ b/markdown/extensions/legacy_em.py
@@ -0,0 +1,30 @@
+'''
+Legacy Em Extension for Python-Markdown
+=======================================
+
+This extention provides legacy behavior for _connected_words_.
+
+Copyright 2015-2018 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+'''
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..inlinepatterns import SimpleTagInlineProcessor
+
+EMPHASIS_RE = r'(\*|_)(.+?)\1'
+STRONG_RE = r'(\*{2}|_{2})(.+?)\1'
+
+
+class LegacyEmExtension(Extension):
+ """ Add legacy_em extension to Markdown class."""
+
+ def extendMarkdown(self, md, md_globals):
+ """ Modify inline patterns. """
+ md.inlinePatterns.register(SimpleTagInlineProcessor(STRONG_RE, 'strong'), 'strong', 40)
+ md.inlinePatterns.register(SimpleTagInlineProcessor(EMPHASIS_RE, 'em'), 'emphasis', 30)
+ md.inlinePatterns.deregister('strong2')
+ md.inlinePatterns.deregister('emphasis2')
diff --git a/markdown/extensions/smart_strong.py b/markdown/extensions/smart_strong.py
deleted file mode 100644
index e7a15d9..0000000
--- a/markdown/extensions/smart_strong.py
+++ /dev/null
@@ -1,37 +0,0 @@
-'''
-Smart_Strong Extension for Python-Markdown
-==========================================
-
-This extension adds smarter handling of double underscores within words.
-
-See <https://Python-Markdown.github.io/extensions/smart_strong>
-for documentation.
-
-Original code Copyright 2011 [Waylan Limberg](http://achinghead.com)
-
-All changes Copyright 2011-2014 The Python Markdown Project
-
-License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
-
-'''
-
-from __future__ import absolute_import
-from __future__ import unicode_literals
-from . import Extension
-from ..inlinepatterns import SimpleTagInlineProcessor
-
-SMART_STRONG_RE = r'(?<!\w)(_{2})(?!_)(.+?)(?<!_)\1(?!\w)'
-STRONG_RE = r'(\*{2})(.+?)\1'
-
-
-class SmartEmphasisExtension(Extension):
- """ Add smart_emphasis extension to Markdown class."""
-
- def extendMarkdown(self, md, md_globals):
- """ Modify inline patterns. """
- md.inlinePatterns.register(SimpleTagInlineProcessor(STRONG_RE, 'strong'), 'strong', 40)
- md.inlinePatterns.register(SimpleTagInlineProcessor(SMART_STRONG_RE, 'strong'), 'strong2', 10)
-
-
-def makeExtension(**kwargs): # pragma: no cover
- return SmartEmphasisExtension(**kwargs)
diff --git a/markdown/inlinepatterns.py b/markdown/inlinepatterns.py
index 8d49d07..e4af53e 100644
--- a/markdown/inlinepatterns.py
+++ b/markdown/inlinepatterns.py
@@ -95,10 +95,8 @@ def build_inlinepatterns(md, **kwargs):
inlinePatterns.register(DoubleTagInlineProcessor(STRONG_EM_RE, 'em,strong'), 'strong_em', 50)
inlinePatterns.register(SimpleTagInlineProcessor(STRONG_RE, 'strong'), 'strong', 40)
inlinePatterns.register(SimpleTagInlineProcessor(EMPHASIS_RE, 'em'), 'emphasis', 30)
- if md.smart_emphasis:
- inlinePatterns.register(SimpleTagInlineProcessor(SMART_EMPHASIS_RE, 'em'), 'emphasis2', 20)
- else:
- inlinePatterns.register(SimpleTagInlineProcessor(EMPHASIS_2_RE, 'em'), 'emphasis2', 20)
+ inlinePatterns.register(SimpleTagInlineProcessor(SMART_STRONG_RE, 'strong'), 'strong2', 20)
+ inlinePatterns.register(SimpleTagInlineProcessor(SMART_EMPHASIS_RE, 'em'), 'emphasis2', 10)
return inlinePatterns
@@ -119,7 +117,13 @@ ESCAPE_RE = r'\\(.)'
EMPHASIS_RE = r'(\*)([^\*]+)\1'
# **strong**
-STRONG_RE = r'(\*{2}|_{2})(.+?)\1'
+STRONG_RE = r'(\*{2})(.+?)\1'
+
+# __smart__strong__
+SMART_STRONG_RE = r'(?<!\w)(_{2})(?!_)(.+?)(?<!_)\1(?!\w)'
+
+# _smart_emphasis_
+SMART_EMPHASIS_RE = r'(?<!\w)(_)(?!_)(.+?)(?<!_)\1(?!\w)'
# ***strongem*** or ***em*strong**
EM_STRONG_RE = r'(\*|_)\1{2}(.+?)\1(.*?)\1{2}'
@@ -127,12 +131,6 @@ EM_STRONG_RE = r'(\*|_)\1{2}(.+?)\1(.*?)\1{2}'
# ***strong**em*
STRONG_EM_RE = r'(\*|_)\1{2}(.+?)\1{2}(.*?)\1'
-# _smart_emphasis_
-SMART_EMPHASIS_RE = r'(?<!\w)(_)(?!_)(.+?)(?<!_)\1(?!\w)'
-
-# _emphasis_
-EMPHASIS_2_RE = r'(_)(.+?)\1'
-
# [text](url) or [text](<url>) or [text](url "title")
LINK_RE = NOIMG + r'\['