diff options
Diffstat (limited to 'markdown')
-rw-r--r-- | markdown/core.py | 10 | ||||
-rw-r--r-- | markdown/extensions/extra.py | 1 | ||||
-rw-r--r-- | markdown/extensions/legacy_em.py | 30 | ||||
-rw-r--r-- | markdown/extensions/smart_strong.py | 37 | ||||
-rw-r--r-- | markdown/inlinepatterns.py | 20 |
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'\[' |