Skip to content

Commit 2bd0772

Browse files
jsm28AlexVonB
andauthored
Avoid inline styles inside <code> / <pre> conversion (#117)
* Avoid inline styles inside `<code>` / `<pre>` conversion The check used for this is analogous to that used to avoid escaping potential markup characters inside such tags. Fixes #103 --------- Co-authored-by: AlexVonB <AlexVonB@users.noreply.github.com>
1 parent 74ddc40 commit 2bd0772

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

markdownify/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ def abstract_inline_conversion(markup_fn):
4848
"""
4949
def implementation(self, el, text, convert_as_inline):
5050
markup = markup_fn(self)
51+
if el.find_parent(['pre', 'code', 'kbd', 'samp']):
52+
return text
5153
prefix, suffix, text = chomp(text)
5254
if not text:
5355
return ''

tests/test_conversions.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,16 @@ def test_code():
8787
assert md('<code><span>*this_should_not_escape*</span></code>') == '`*this_should_not_escape*`'
8888
assert md('<code>this should\t\tnormalize</code>') == '`this should normalize`'
8989
assert md('<code><span>this should\t\tnormalize</span></code>') == '`this should normalize`'
90+
assert md('<code>foo<b>bar</b>baz</code>') == '`foobarbaz`'
91+
assert md('<kbd>foo<i>bar</i>baz</kbd>') == '`foobarbaz`'
92+
assert md('<samp>foo<del> bar </del>baz</samp>') == '`foo bar baz`'
93+
assert md('<samp>foo <del>bar</del> baz</samp>') == '`foo bar baz`'
94+
assert md('<code>foo<em> bar </em>baz</code>') == '`foo bar baz`'
95+
assert md('<code>foo<code> bar </code>baz</code>') == '`foo bar baz`'
96+
assert md('<code>foo<strong> bar </strong>baz</code>') == '`foo bar baz`'
97+
assert md('<code>foo<s> bar </s>baz</code>') == '`foo bar baz`'
98+
assert md('<code>foo<sup>bar</sup>baz</code>', sup_symbol='^') == '`foobarbaz`'
99+
assert md('<code>foo<sub>bar</sub>baz</code>', sub_symbol='^') == '`foobarbaz`'
90100

91101

92102
def test_del():
@@ -215,6 +225,17 @@ def test_pre():
215225
assert md('<pre><span>*this_should_not_escape*</span></pre>') == '\n```\n*this_should_not_escape*\n```\n'
216226
assert md('<pre>\t\tthis should\t\tnot normalize</pre>') == '\n```\n\t\tthis should\t\tnot normalize\n```\n'
217227
assert md('<pre><span>\t\tthis should\t\tnot normalize</span></pre>') == '\n```\n\t\tthis should\t\tnot normalize\n```\n'
228+
assert md('<pre>foo<b>\nbar\n</b>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
229+
assert md('<pre>foo<i>\nbar\n</i>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
230+
assert md('<pre>foo\n<i>bar</i>\nbaz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
231+
assert md('<pre>foo<i>\n</i>baz</pre>') == '\n```\nfoo\nbaz\n```\n'
232+
assert md('<pre>foo<del>\nbar\n</del>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
233+
assert md('<pre>foo<em>\nbar\n</em>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
234+
assert md('<pre>foo<code>\nbar\n</code>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
235+
assert md('<pre>foo<strong>\nbar\n</strong>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
236+
assert md('<pre>foo<s>\nbar\n</s>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
237+
assert md('<pre>foo<sup>\nbar\n</sup>baz</pre>', sup_symbol='^') == '\n```\nfoo\nbar\nbaz\n```\n'
238+
assert md('<pre>foo<sub>\nbar\n</sub>baz</pre>', sub_symbol='^') == '\n```\nfoo\nbar\nbaz\n```\n'
218239

219240

220241
def test_script():

0 commit comments

Comments
 (0)