Skip to content

Commit 1f50d19

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

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

markdownify/__init__.pyi

Lines changed: 5 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
@@ -14,13 +15,15 @@ STRIP: str
1415
STRIP_ONE: str
1516

1617

18+
type CodeLanguageCallback = Callable[[Incomplete], str | None]
19+
1720
def markdownify(
1821
html: str,
1922
autolinks: bool = ...,
2023
bs4_options: str = ...,
2124
bullets: str = ...,
2225
code_language: str = ...,
23-
code_language_callback: Incomplete | None = ...,
26+
code_language_callback: CodeLanguageCallback | None = ...,
2427
convert: list[str] | None = ...,
2528
default_title: bool = ...,
2629
escape_asterisks: bool = ...,
@@ -48,7 +51,7 @@ class MarkdownConverter:
4851
bs4_options: str = ...,
4952
bullets: str = ...,
5053
code_language: str = ...,
51-
code_language_callback: Incomplete | None = ...,
54+
code_language_callback: CodeLanguageCallback | None = ...,
5255
convert: list[str] | None = ...,
5356
default_title: bool = ...,
5457
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)