From 8ed2fcb8ac688452ae1f5b29ab403e1e1d97e4e5 Mon Sep 17 00:00:00 2001 From: Isaac Muse Date: Sun, 21 Apr 2024 20:50:26 -0600 Subject: [PATCH] Fix snippet line range with start of line 1 (#2362) Fixes #2361 --- docs/src/markdown/about/changelog.md | 4 ++++ pymdownx/__meta__.py | 2 +- pymdownx/snippets.py | 2 +- tests/test_extensions/test_snippets.py | 27 ++++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/docs/src/markdown/about/changelog.md b/docs/src/markdown/about/changelog.md index 5265ffb0b..b617548ae 100644 --- a/docs/src/markdown/about/changelog.md +++ b/docs/src/markdown/about/changelog.md @@ -1,5 +1,9 @@ # Changelog +## 10.8.1 + +- **FIX**: Snippets: Fix snippet line range with a start of line 1. + ## 10.8 - **NEW**: Require Python Markdown 3.6+. diff --git a/pymdownx/__meta__.py b/pymdownx/__meta__.py index bf2cda005..d58ff9f73 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, 8, 0, "final") +__version_info__ = Version(10, 8, 1, "final") __version__ = __version_info__._get_canonical() diff --git a/pymdownx/snippets.py b/pymdownx/snippets.py index dbb1e5377..58aada020 100644 --- a/pymdownx/snippets.py +++ b/pymdownx/snippets.py @@ -292,7 +292,7 @@ def parse_snippets(self, lines, file_name=None, is_url=False): end = int(ending[1:]) starting = m.group(2) if starting and len(starting) > 1: - start = max(1, int(starting[1:]) - 1) + start = max(0, int(starting[1:]) - 1) section_name = m.group(4) if section_name: section = section_name[1:] diff --git a/tests/test_extensions/test_snippets.py b/tests/test_extensions/test_snippets.py index 80410345a..3a792efbf 100644 --- a/tests/test_extensions/test_snippets.py +++ b/tests/test_extensions/test_snippets.py @@ -209,6 +209,33 @@ def test_start_line_inline(self): True ) + def test_start_1_1(self): + """Test beginning of file, single line range.""" + + self.check_markdown( + R''' + ---8<--- "lines.txt:1:1" + ''', + ''' +

This is a multi-line

+ ''', + True + ) + + def test_start_1_2(self): + """Test beginning of file span of multiple lines.""" + + self.check_markdown( + R''' + ---8<--- "lines.txt:1:2" + ''', + ''' +

This is a multi-line + snippet.

+ ''', + True + ) + def test_end_line_inline(self): """Test ending line with inline syntax."""