diff --git a/docs/src/markdown/about/changelog.md b/docs/src/markdown/about/changelog.md index f169c6c7d..acab38904 100644 --- a/docs/src/markdown/about/changelog.md +++ b/docs/src/markdown/about/changelog.md @@ -1,5 +1,9 @@ # Changelog +## 10.12.1 + +- **FIX**: Snippets: Fix issue where when non sections of files are included, section labels are not stripped. + ## 10.12 - **NEW**: Blocks: Blocks extensions no longer considered in beta. diff --git a/pymdownx/__meta__.py b/pymdownx/__meta__.py index 75e3ade2e..0e9a48447 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, 12, 0, "final") +__version_info__ = Version(10, 12, 1, "final") __version__ = __version_info__._get_canonical() diff --git a/pymdownx/snippets.py b/pymdownx/snippets.py index 77d4021fe..e95e86cce 100644 --- a/pymdownx/snippets.py +++ b/pymdownx/snippets.py @@ -222,7 +222,7 @@ def download(self, url): # Process lines return [l.decode(self.encoding) for l in content.splitlines()] - def parse_snippets(self, lines, file_name=None, is_url=False): + def parse_snippets(self, lines, file_name=None, is_url=False, is_section=False): """Parse snippets snippet.""" if file_name: @@ -257,6 +257,20 @@ def parse_snippets(self, lines, file_name=None, is_url=False): continue elif not block: + if not is_section: + # Check for section line, if present remove, if escaped, reformat it + m2 = self.RE_SNIPPET_SECTION.match(line) + if m2 and m2.group('escape'): + line = ( + m2.group('pre') + m2.group('escape').replace(';', '', 1) + m2.group('inline_marker') + + m2.group('section') + m2.group('post') + ) + m2 = None + + # Found a section that must be removed + if m2 is not None: + continue + # Not in snippet, and we didn't find an inline, # so just a normal line new_lines.append(line) @@ -350,7 +364,8 @@ def parse_snippets(self, lines, file_name=None, is_url=False): space + l2 for l2 in self.parse_snippets( s_lines, snippet, - is_url=url + is_url=url, + is_section=section is not None ) ] ) diff --git a/tests/test_extensions/test_snippets.py b/tests/test_extensions/test_snippets.py index 7c607fa4a..50c8902b8 100644 --- a/tests/test_extensions/test_snippets.py +++ b/tests/test_extensions/test_snippets.py @@ -401,6 +401,41 @@ def test_section_inline_escaped_other_section(self): True ) + def test_whole_file_with_sections(self): + """Test whole file with sections.""" + + self.check_markdown( + R''' + ``` + -8<- "section_nested.txt" + ``` + ''', + ''' +
div {
+                color: red;
+                background-color: white;
+                padding: 16px
+            }
+
+
+            div {
+                color: red;
+                /* --8<-- [start: css-section4] */
+                background-color: white;
+                padding: 16px
+                /* --8<-- [end: css-section4] */
+            }
+
+            div {
+                color: red;
+                background-color: white;
+                padding: 16px
+            }
+            
+ ''', + True + ) + def test_section_ignore_double_start_section(self): """Test nested sections."""