Skip to content

Commit 0ea95de

Browse files
committed
Add code language callback
1 parent ed3eee7 commit 0ea95de

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

markdownify/__init__.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class DefaultOptions:
7171
autolinks = True
7272
bullets = '*+-' # An iterable of bullet types.
7373
code_language = ''
74+
code_language_callback = None
7475
convert = None
7576
default_title = False
7677
escape_underscores = True
@@ -331,7 +332,12 @@ def convert_p(self, el, text, convert_as_inline):
331332
def convert_pre(self, el, text, convert_as_inline):
332333
if not text:
333334
return ''
334-
return '\n```%s\n%s\n```\n' % (self.options['code_language'], text)
335+
code_language = self.options['code_language']
336+
337+
if self.options['code_language_callback']:
338+
code_language = self.options['code_language_callback'](el) or code_language
339+
340+
return '\n```%s\n%s\n```\n' % (code_language, text)
335341

336342
convert_s = convert_del
337343

tests/test_conversions.py

+9
Original file line numberDiff line numberDiff line change
@@ -215,3 +215,12 @@ def test_sup():
215215
def test_lang():
216216
assert md('<pre>test\n foo\nbar</pre>', code_language='python') == '\n```python\ntest\n foo\nbar\n```\n'
217217
assert md('<pre><code>test\n foo\nbar</code></pre>', code_language='javascript') == '\n```javascript\ntest\n foo\nbar\n```\n'
218+
219+
220+
def test_lang_callback():
221+
def callback(el):
222+
return el['class'][0] if el.has_attr('class') else None
223+
224+
assert md('<pre class="python">test\n foo\nbar</pre>', code_language_callback=callback) == '\n```python\ntest\n foo\nbar\n```\n'
225+
assert md('<pre class="javascript"><code>test\n foo\nbar</code></pre>', code_language_callback=callback) == '\n```javascript\ntest\n foo\nbar\n```\n'
226+
assert md('<pre class="javascript"><code class="javascript">test\n foo\nbar</code></pre>', code_language_callback=callback) == '\n```javascript\ntest\n foo\nbar\n```\n'

0 commit comments

Comments
 (0)