From 480ae4aedf0f79ba7f005b86626a170735a644bf Mon Sep 17 00:00:00 2001 From: chrimaho <44449504+chrimaho@users.noreply.github.com> Date: Tue, 5 Sep 2023 09:17:53 +1000 Subject: [PATCH 1/4] Add function and tests for markdown chunks using pygment langs like `{.py` and `{.python` etc --- src/blacken_docs/__init__.py | 8 ++++-- tests/test_blacken_docs.py | 54 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/src/blacken_docs/__init__.py b/src/blacken_docs/__init__.py index 8d174cf..b44c759 100644 --- a/src/blacken_docs/__init__.py +++ b/src/blacken_docs/__init__.py @@ -13,10 +13,14 @@ from black.mode import TargetVersion -PYGMENTS_PY_LANGS = frozenset(("python", "py", "sage", "python3", "py3", "numpy")) +PYGMENTS_PY_LANGS = frozenset( + ("python", "py", "sage", "python3", "py3", "numpy", ".py", ".python") +) PYGMENTS_PY_LANGS_RE_FRAGMENT = f"({'|'.join(PYGMENTS_PY_LANGS)})" MD_RE = re.compile( - r"(?P^(?P *)```\s*" + PYGMENTS_PY_LANGS_RE_FRAGMENT + r"( .*?)?\n)" + r"(?P^(?P *)```\s*(\{?\s*)?" + + PYGMENTS_PY_LANGS_RE_FRAGMENT + + r"( .*?)?\n)" r"(?P.*?)" r"(?P^(?P=indent)```\s*$)", re.DOTALL | re.MULTILINE, diff --git a/tests/test_blacken_docs.py b/tests/test_blacken_docs.py index b845e1d..d647b99 100644 --- a/tests/test_blacken_docs.py +++ b/tests/test_blacken_docs.py @@ -944,3 +944,57 @@ def test_format_src_rst_pycon_comment_before_promopt(): " # Comment about next line\n" " >>> pass\n" ) + + +def test_format_src_markdown_pymdown_1(): + before = dedent( + """\ + ```{.python title='example.py'} + f(1,2,3) + ``` + """ + ) + after, _ = blacken_docs.format_str(before, BLACK_MODE) + assert after == dedent( + """\ + ```{.python title='example.py'} + f(1, 2, 3) + ``` + """ + ) + + +def test_format_src_markdown_pymdown_2(): + before = dedent( + """\ + ``` {.py title='example.py'} + f(1,2,3) + ``` + """ + ) + after, _ = blacken_docs.format_str(before, BLACK_MODE) + assert after == dedent( + """\ + ``` {.py title='example.py'} + f(1, 2, 3) + ``` + """ + ) + + +def test_format_src_markdown_pymdown_3(): + before = dedent( + """\ + ```{ .py .python .extra-class #id linenums="1" title="example.py"} + f(1,2,3) + ``` + """ + ) + after, _ = blacken_docs.format_str(before, BLACK_MODE) + assert after == dedent( + """\ + ```{ .py .python .extra-class #id linenums="1" title="example.py"} + f(1, 2, 3) + ``` + """ + ) From e8f89e1aafd1fda498bd593b1228223ddc63aded Mon Sep 17 00:00:00 2001 From: chrimaho <44449504+chrimaho@users.noreply.github.com> Date: Tue, 12 Sep 2023 07:51:54 +1000 Subject: [PATCH 2/4] Fix python MD Regex --- src/blacken_docs/__init__.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/blacken_docs/__init__.py b/src/blacken_docs/__init__.py index b44c759..c21affa 100644 --- a/src/blacken_docs/__init__.py +++ b/src/blacken_docs/__init__.py @@ -13,12 +13,10 @@ from black.mode import TargetVersion -PYGMENTS_PY_LANGS = frozenset( - ("python", "py", "sage", "python3", "py3", "numpy", ".py", ".python") -) +PYGMENTS_PY_LANGS = frozenset(("python", "py", "sage", "python3", "py3", "numpy")) PYGMENTS_PY_LANGS_RE_FRAGMENT = f"({'|'.join(PYGMENTS_PY_LANGS)})" MD_RE = re.compile( - r"(?P^(?P *)```\s*(\{?\s*)?" + r"(?P^(?P *)```\s*(\{?\s*)?(\.\s*)?" + PYGMENTS_PY_LANGS_RE_FRAGMENT + r"( .*?)?\n)" r"(?P.*?)" From 702b89f7df37dac9b637b49e6651a8ae1fdd3ba5 Mon Sep 17 00:00:00 2001 From: chrimaho <44449504+chrimaho@users.noreply.github.com> Date: Tue, 12 Sep 2023 08:03:49 +1000 Subject: [PATCH 3/4] Fix missing qualifier --- src/blacken_docs/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blacken_docs/__init__.py b/src/blacken_docs/__init__.py index c21affa..8b2a9d8 100644 --- a/src/blacken_docs/__init__.py +++ b/src/blacken_docs/__init__.py @@ -16,7 +16,7 @@ PYGMENTS_PY_LANGS = frozenset(("python", "py", "sage", "python3", "py3", "numpy")) PYGMENTS_PY_LANGS_RE_FRAGMENT = f"({'|'.join(PYGMENTS_PY_LANGS)})" MD_RE = re.compile( - r"(?P^(?P *)```\s*(\{?\s*)?(\.\s*)?" + r"(?P^(?P *)```\s*(\{?\s*)?(\.?\s*)?" + PYGMENTS_PY_LANGS_RE_FRAGMENT + r"( .*?)?\n)" r"(?P.*?)" From 9e95d547bc969d16f548cfcd906c6ebccb5909a4 Mon Sep 17 00:00:00 2001 From: chrimaho <44449504+chrimaho@users.noreply.github.com> Date: Tue, 12 Sep 2023 08:09:06 +1000 Subject: [PATCH 4/4] Remove additional spaces `\s` --- src/blacken_docs/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blacken_docs/__init__.py b/src/blacken_docs/__init__.py index 8b2a9d8..ebbc56b 100644 --- a/src/blacken_docs/__init__.py +++ b/src/blacken_docs/__init__.py @@ -16,7 +16,7 @@ PYGMENTS_PY_LANGS = frozenset(("python", "py", "sage", "python3", "py3", "numpy")) PYGMENTS_PY_LANGS_RE_FRAGMENT = f"({'|'.join(PYGMENTS_PY_LANGS)})" MD_RE = re.compile( - r"(?P^(?P *)```\s*(\{?\s*)?(\.?\s*)?" + r"(?P^(?P *)```\s*(\{?\s*)?(\.?)?" + PYGMENTS_PY_LANGS_RE_FRAGMENT + r"( .*?)?\n)" r"(?P.*?)"