diff --git a/docs/src/markdown/about/changelog.md b/docs/src/markdown/about/changelog.md index f79007c78..a8d39b656 100644 --- a/docs/src/markdown/about/changelog.md +++ b/docs/src/markdown/about/changelog.md @@ -1,5 +1,10 @@ # Changelog +## 10.11.1 + +- **Fix**: SuperFences: Fix regression where an omitted language in conjunction with options in the fenced header + can cause a fence to not be parsed. + ## 10.11 - **NEW**: SuperFences: Allow fenced code to be parsed in the form ` ```lang {.class #id} `. diff --git a/pymdownx/__meta__.py b/pymdownx/__meta__.py index fecd67690..1c3b1fb46 100644 --- a/pymdownx/__meta__.py +++ b/pymdownx/__meta__.py @@ -185,5 +185,5 @@ def parse_version(ver, pre=False): return Version(major, minor, micro, release, pre, post, dev) -__version_info__ = Version(10, 11, 0, "final") +__version_info__ = Version(10, 11, 1, "final") __version__ = __version_info__._get_canonical() diff --git a/pymdownx/superfences.py b/pymdownx/superfences.py index b37f8f580..a534bd5e7 100644 --- a/pymdownx/superfences.py +++ b/pymdownx/superfences.py @@ -44,7 +44,7 @@ RE_NESTED_FENCE_START = re.compile( r'''(?x) (?P~{3,}|`{3,}) - (?:[ \t]*\.?(?P[\w#.+-]+))? # Language + (?:[ \t]*\.?(?P[\w#.+-]+)(?=[\t ]|$))? # Language (?: [ \t]*(\{(?P[^\n]*)\}) | # Optional attributes or (?P diff --git a/tests/test_extensions/test_superfences.py b/tests/test_extensions/test_superfences.py index 50dfe11c7..ea4714cae 100644 --- a/tests/test_extensions/test_superfences.py +++ b/tests/test_extensions/test_superfences.py @@ -609,6 +609,40 @@ def __init__(self): True ) + def test_nonword_boundary_language(self): + """Test language with non-word boundary.""" + + self.check_markdown( + """ + ```c++ hl_lines="1" + #include + ``` + """, + """ +
#include <iostream>
+            
+ """, # noqa: E501 + True + ) + + def test_omitted_language(self): + """Test when language is omitted.""" + + self.check_markdown( + """ + ```hl_lines="1" + some + code + ``` + """, + """ +
some
+            code
+            
+ """, + True + ) + class TestSuperFencesClassesIds(util.MdCase): """Test classes and ids without attribute lists."""