Skip to content

Commit 4ed274b

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

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-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: Callable[[Incomplete], str | None] | None = ...,
5253
convert: list[str] | None = ...,
5354
default_title: bool = ...,
5455
escape_asterisks: bool = ...,

tests/types.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from markdownify import markdownify, ASTERISK, BACKSLASH, LSTRIP, RSTRIP, SPACES, STRIP, UNDERLINED, UNDERSCORE, MarkdownConverter
22
from bs4 import BeautifulSoup
3+
from typing import Union
34

45
markdownify("<p>Hello</p>") == "Hello" # test default of STRIP
56
markdownify("<p>Hello</p>", strip_document=LSTRIP) == "Hello\n\n"
@@ -55,4 +56,15 @@
5556

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

0 commit comments

Comments
 (0)