diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2024-02-06 18:39:51 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2024-02-06 18:39:51 +0100 |
commit | ec19ee9d82a9d06e5b86fcb58329767226b0676f (patch) | |
tree | 32cc72b0821b2dafae4cb16dde394b58d0cd590c | |
parent | 983f063d33efbf2c6fb43c3aa12562b464b2cb9c (diff) | |
download | volse-hubzilla-ec19ee9d82a9d06e5b86fcb58329767226b0676f.tar.gz volse-hubzilla-ec19ee9d82a9d06e5b86fcb58329767226b0676f.tar.bz2 volse-hubzilla-ec19ee9d82a9d06e5b86fcb58329767226b0676f.zip |
Fix convert code blocs from markdown/html to bbcode
-rw-r--r-- | include/html2bbcode.php | 11 | ||||
-rw-r--r-- | tests/unit/includes/BBCodeTest.php | 4 | ||||
-rw-r--r-- | tests/unit/includes/MarkdownTest.php | 8 |
3 files changed, 21 insertions, 2 deletions
diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 5cb153a77..f75a3e428 100644 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -127,8 +127,15 @@ function html2bbcode($message) $xpath = new DomXPath($doc); $list = $xpath->query("//pre"); - foreach ($list as $node) - $node->nodeValue = str_replace("\n", "\r", $node->nodeValue); + foreach ($list as $node) { + if ($node->hasChildNodes()) { + foreach ($node->childNodes as $child) { + $child->nodeValue = str_replace("\n", "\r", $child->nodeValue); + } + } else { + $node->nodeValue = str_replace("\n", "\r", $node->nodeValue); + } + } $message = $doc->saveHTML(); $message = str_replace(array("\n<", ">\n", "\r", "\n", "\xC3\x82\xC2\xA0"), array("<", ">", "<br />", " ", ""), $message); diff --git a/tests/unit/includes/BBCodeTest.php b/tests/unit/includes/BBCodeTest.php index 9e9b1a33b..54c35e67d 100644 --- a/tests/unit/includes/BBCodeTest.php +++ b/tests/unit/includes/BBCodeTest.php @@ -41,6 +41,10 @@ class BBCodeTest extends UnitTestCase { '<img src="https://example.com/image.jpg" alt="Alt text">', '[img=https://example.com/image.jpg]Alt text[/img]' ], + 'code block' => [ + "<pre><code>some\ncode</code></pre>", + "[code]some\ncode[/code]" + ], ]; } } diff --git a/tests/unit/includes/MarkdownTest.php b/tests/unit/includes/MarkdownTest.php index e05cec6fb..8025e8efa 100644 --- a/tests/unit/includes/MarkdownTest.php +++ b/tests/unit/includes/MarkdownTest.php @@ -69,6 +69,14 @@ class MarkdownTest extends UnitTestCase { '[img=https://example.com/image.jpg]Alt text[/img]', '![Alt text](https://example.com/image.jpg)' ], + 'inline code' => [ + '[code]some code[/code]', + '`some code`' + ], + 'code block no language' => [ + "[code]some code\nover multiple lines[/code]", + "```\nsome code\nover multiple lines\n```" + ], ]; } |