From 2bd07726854e184a0f2ed0a79871901b16206fcb Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 4 Apr 2024 18:55:54 +0000 Subject: [PATCH] Avoid inline styles inside `` / `
` conversion
 (#117)

* Avoid inline styles inside `` / `
` 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 
---
 markdownify/__init__.py   |  2 ++
 tests/test_conversions.py | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/markdownify/__init__.py b/markdownify/__init__.py
index 86226d2..0945916 100644
--- a/markdownify/__init__.py
+++ b/markdownify/__init__.py
@@ -48,6 +48,8 @@ def abstract_inline_conversion(markup_fn):
     """
     def implementation(self, el, text, convert_as_inline):
         markup = markup_fn(self)
+        if el.find_parent(['pre', 'code', 'kbd', 'samp']):
+            return text
         prefix, suffix, text = chomp(text)
         if not text:
             return ''
diff --git a/tests/test_conversions.py b/tests/test_conversions.py
index 1e685f3..9652143 100644
--- a/tests/test_conversions.py
+++ b/tests/test_conversions.py
@@ -87,6 +87,16 @@ def test_code():
     assert md('*this_should_not_escape*') == '`*this_should_not_escape*`'
     assert md('this  should\t\tnormalize') == '`this should normalize`'
     assert md('this  should\t\tnormalize') == '`this should normalize`'
+    assert md('foobarbaz') == '`foobarbaz`'
+    assert md('foobarbaz') == '`foobarbaz`'
+    assert md('foo bar baz') == '`foo bar baz`'
+    assert md('foo bar baz') == '`foo bar baz`'
+    assert md('foo bar baz') == '`foo bar baz`'
+    assert md('foo bar baz') == '`foo bar baz`'
+    assert md('foo bar baz') == '`foo bar baz`'
+    assert md('foo bar baz') == '`foo bar baz`'
+    assert md('foobarbaz', sup_symbol='^') == '`foobarbaz`'
+    assert md('foobarbaz', sub_symbol='^') == '`foobarbaz`'
 
 
 def test_del():
@@ -215,6 +225,17 @@ def test_pre():
     assert md('
*this_should_not_escape*
') == '\n```\n*this_should_not_escape*\n```\n' assert md('
\t\tthis  should\t\tnot  normalize
') == '\n```\n\t\tthis should\t\tnot normalize\n```\n' assert md('
\t\tthis  should\t\tnot  normalize
') == '\n```\n\t\tthis should\t\tnot normalize\n```\n' + assert md('
foo\nbar\nbaz
') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbar\nbaz
') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbar\nbaz
') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbaz
') == '\n```\nfoo\nbaz\n```\n' + assert md('
foo\nbar\nbaz
') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbar\nbaz
') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbar\nbaz
') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbar\nbaz
') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbar\nbaz
') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbar\nbaz
', sup_symbol='^') == '\n```\nfoo\nbar\nbaz\n```\n' + assert md('
foo\nbar\nbaz
', sub_symbol='^') == '\n```\nfoo\nbar\nbaz\n```\n' def test_script():