Skip to content

Commit c3a85b2

Browse files
committed
feat: improve type for code_language_callback
1 parent 91a5f32 commit c3a85b2

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

markdownify/__init__.pyi

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from _typeshed import Incomplete
2+
from typing import Callable
23

34
ATX: str
45
ATX_CLOSED: str
@@ -20,7 +21,7 @@ def markdownify(
2021
bs4_options: str = ...,
2122
bullets: str = ...,
2223
code_language: str = ...,
23-
code_language_callback: Incomplete | None = ...,
24+
code_language_callback: Callable[[Incomplete], str | None] | None = ...,
2425
convert: list[str] | None = ...,
2526
default_title: bool = ...,
2627
escape_asterisks: bool = ...,
@@ -48,7 +49,7 @@ class MarkdownConverter:
4849
bs4_options: str = ...,
4950
bullets: str = ...,
5051
code_language: str = ...,
51-
code_language_callback: Incomplete | None = ...,
52+
code_language_callback: CodeLanCallable[[Incomplete], str | None]guageCallback | None = ...,
5253
convert: list[str] | None = ...,
5354
default_title: bool = ...,
5455
escape_asterisks: bool = ...,

tests/types.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,15 @@
5555

5656
html = '<b>test</b>'
5757
soup = BeautifulSoup(html, 'html.parser')
58-
MarkdownConverter().convert_soup(soup) == '**test**'
58+
MarkdownConverter().convert_soup(soup) == '**test**'
59+
60+
61+
def callback(el: BeautifulSoup) -> str | None:
62+
return el['class'][0] if el.has_attr('class') else None
63+
64+
65+
MarkdownConverter(code_language_callback=callback).convert("")
66+
MarkdownConverter(code_language_callback=lambda el: None).convert("")
67+
68+
markdownify('<pre class="python">test\n foo\nbar</pre>', code_language_callback=callback)
69+
markdownify('<pre class="python">test\n foo\nbar</pre>', code_language_callback=lambda el: None)

0 commit comments

Comments
 (0)