summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/change_log/index.md4
-rw-r--r--markdown/inlinepatterns.py2
-rw-r--r--tests/test_syntax/inline/test_emphasis.py48
3 files changed, 50 insertions, 4 deletions
diff --git a/docs/change_log/index.md b/docs/change_log/index.md
index 9626900..6dd57c4 100644
--- a/docs/change_log/index.md
+++ b/docs/change_log/index.md
@@ -3,6 +3,10 @@ title: Change Log
Python-Markdown Change Log
=========================
+*under development*: version 3.4.1 (a bug-fix release).
+
+* Improve standalone * and _ parsing (#1300).
+
July 15, 2022: version 3.4.1 (a bug-fix release).
* Fix an import issue with `importlib.util` (#1274).
diff --git a/markdown/inlinepatterns.py b/markdown/inlinepatterns.py
index eb313bd..0bd129c 100644
--- a/markdown/inlinepatterns.py
+++ b/markdown/inlinepatterns.py
@@ -154,7 +154,7 @@ REFERENCE_RE = LINK_RE
IMAGE_REFERENCE_RE = IMAGE_LINK_RE
# stand-alone * or _
-NOT_STRONG_RE = r'((^|\s)(\*|_)(\s|$))'
+NOT_STRONG_RE = r'((^|(?<=\s))(\*{1,3}|_{1,3})(?=\s|$))'
# <http://www.123.com>
AUTOLINK_RE = r'<((?:[Ff]|[Hh][Tt])[Tt][Pp][Ss]?://[^<>]*)>'
diff --git a/tests/test_syntax/inline/test_emphasis.py b/tests/test_syntax/inline/test_emphasis.py
index 1e7fafa..29107c7 100644
--- a/tests/test_syntax/inline/test_emphasis.py
+++ b/tests/test_syntax/inline/test_emphasis.py
@@ -36,6 +36,42 @@ class TestNotEmphasis(TestCase):
'<p>_</p>'
)
+ def test_standalone_asterisks_consecutive(self):
+ self.assertMarkdownRenders(
+ 'Foo * * * *',
+ '<p>Foo * * * *</p>'
+ )
+
+ def test_standalone_understore_consecutive(self):
+ self.assertMarkdownRenders(
+ 'Foo _ _ _ _',
+ '<p>Foo _ _ _ _</p>'
+ )
+
+ def test_standalone_asterisks_pairs(self):
+ self.assertMarkdownRenders(
+ 'Foo ** ** ** **',
+ '<p>Foo ** ** ** **</p>'
+ )
+
+ def test_standalone_understore_pairs(self):
+ self.assertMarkdownRenders(
+ 'Foo __ __ __ __',
+ '<p>Foo __ __ __ __</p>'
+ )
+
+ def test_standalone_asterisks_triples(self):
+ self.assertMarkdownRenders(
+ 'Foo *** *** *** ***',
+ '<p>Foo *** *** *** ***</p>'
+ )
+
+ def test_standalone_understore_triples(self):
+ self.assertMarkdownRenders(
+ 'Foo ___ ___ ___ ___',
+ '<p>Foo ___ ___ ___ ___</p>'
+ )
+
def test_standalone_asterisk_in_text(self):
self.assertMarkdownRenders(
'foo * bar',
@@ -72,10 +108,16 @@ class TestNotEmphasis(TestCase):
'<p>foo\n_ bar _\nbaz</p>'
)
- def test_standalone_asterisks_at_end(self):
+ def test_standalone_underscore_at_begin(self):
+ self.assertMarkdownRenders(
+ '_ foo_ bar',
+ '<p>_ foo_ bar</p>'
+ )
+
+ def test_standalone_asterisk_at_end(self):
self.assertMarkdownRenders(
- 'foo * bar *',
- '<p>foo * bar *</p>'
+ 'foo *bar *',
+ '<p>foo *bar *</p>'
)
def test_standalone_understores_at_begin_end(self):